何かがプロパティとして宣言されているという事実は、プログラムの実行には影響しません。『 Inside Microsoft .NET IL Assembler』という本がプロパティに関する章の導入部で述べているように、JIT コンパイラと実行エンジンはプロパティをまったく認識せず、プロパティの概念を参照する IL 命令はありません。
メタデータのコンシューマーは Visual Studio だけではないことに注意してください。ストリップ.property
して再アセンブルすると、ゲッター メソッドとセッター メソッドが得られますが、明らかにプロパティではなくなります。これが問題になる最も明白な例: オブジェクトのインスタンスが、リフレクションを使用してクラスの各プロパティを呼び出す別のメソッドに渡された場合はどうなるでしょうか? 提案された難読化方法の結果として、プロパティが見つからず、実行時の動作が変更されました。
もちろん、リフレクションやシリアライゼーションなどのシナリオは、前の質問で説明したように、難読化ツールでよくある落とし穴です。だから、私が言っているのは問題があるということですが、他のスレッドで議論されているものと同様の一連のシナリオ、特に実行時にメタデータが消費されているかシリアライゼーションが実行されているシナリオでは問題があります。
上記の本の最新版は別の名前です: Expert .NET 2.0 IL Assembler ; 参考になるかもしれません。 .NET 共通言語ランタイム用にコンパイルすることも価値がある場合があります。