VisualStudio のよくある問題は、プロパティ ゲッターの不思議な呼び出しです。これらに副作用がある場合 (最も一般的な形式はif (foo == null) foo = new foo(); return foo;
)、デバッガーの [ローカル] ウィンドウと [ウォッチ] ウィンドウがブレーク ポイントに到達することなくプロパティを呼び出すという事実により、デバッグ時に予期しない影響が生じる可能性があります。
これには簡単な解決策があります。属性でプロパティにタグを付けるだけです
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
では、大規模なコード ベースで副作用が発生する可能性のあるゲッターを見つけるにはどうすればよいでしょうか。
NDependは、この種のツールとして最適です。その CQL 言語を使用すると、たとえば、含まれているインスタンスの状態を直接変更するすべてのプロパティを見つけることができます。
SELECT METHODS FROM ASSEMBLIES "FOO"
WHERE IsPropertyGetter AND ChangesObjectState
これは、フィールドを直接変更する getter のみを検索しますInitialize()
。メソッドを呼び出すなどして間接的に変更する getter を検索するにはどうすればよいですか?