私はLinqToSqlデータコンテキストオブジェクトと基礎となるSQLデータベースとの密接な結合が気に入っていますが、難読化がどのように絵に収まるのか不思議です。LinqToSql難読化
この場合、オブジェクトの自動生成されたセッターのプロパティは、PropertyNameなどをハードコードします。 SendPropertyChangingメソッド呼び出しの "FamilyId"文字列。このコードの変更は、次にファイルを再生成するときに置き換えられるので、リフレクションヘルパーを使用してプロパティ名を取得することはできません。
明らかに難読化が発生すると、このプロパティは全く異なるものと呼ばれます。これは、通知イベントがWPFアプリケーションのUIイベントハンドラに到達しないように見えます。
私は、これらの自動生成されたデータオブジェクトを、アダプタパターンスタイルでラップしようとしました。少なくともラッパーは難読化されます。私がしようとすると、コレクションに対処するまで大丈夫そうですstackoverflow hardcode vs reflection
private Family _family;
public int FamilyId
{
get { return _family.FamilyId; }
set
{
NotifyPropertyChanging(() => FamilyId);
_family.FamilyId= value;
NotifyPropertyChanged(() => FamilyId);
}
}
あたりそう。エンティティセットのコレクションは、コレクションの各要素がラップタイプにキャストする必要があるため、より複雑です。また、遅延ロード、トランザクション、実際のタイプでビジネスレイヤロジックを実行するのではなく、タイプをラップしているという話を始めると複雑さが増していきます。
私の気持ちは、これが複雑になるということです。
他の誰かがWPF、LinqToSqlデータクラスおよび難読化を使用して、より正確なアーキテクチャを明らかにすることができますか?
このプロセスをサポートするために使用している難読化ツールはどれですか?
あなたの試みから学んだことを振り返ってみると、同じプロセスをやり直すかどうかをお勧めできますか?あなたは別の方法を試みますか?
私の好みはもちろん、全てが完全に難読化されていることです。半分の焼いたラップを高いオーバヘッドで貼り付けるのではなく、ほとんど保護しません。
自動生成されたコード自体にはIPがほとんど存在しないことを正しく指摘しています。私は、ハッカーが、自動生成された読みやすいプロパティ名が使用されている方法のために暗黙の知識を得ることができるという単純な懸念を推測します。私は最近、Code Generationを手動POCO定義のために切ることができるので、代わりにEntity Frameworkを使用して同じDALを試みました。私はこれらの公共財産を完全に難読化することができます。特定の製品をプラグインするのではなく、RedGate SmartAssembleyはある程度の成功を収めたものです。 – Westy