3

コードをステップ実行しているときに、DebuggerStepThrough 属性を無視している特定の行を深く見つけています。linq ステートメント内のようです。

同様の SO を次に示します。DebuggerStepThrough は無視されます

ステップ実行中のコードはデバッグ モードです。以下の ReflectionHelper メソッドと同じソリューションです。プロジェクトの参照はプロジェクト経由であり、他の場所のコンパイル dll ではありません。つまり、プロジェクトと同じ出力 bin/debug フォルダーです。両方のプロジェクト側でコードを変更しているときに気付くように、使用されているアセンブリが別のものであることを示唆する異常は他に何も起こっていません。

を使用しF11てステップ実行していると、次のコードにステップ インします。

私は私の中に次のものを持っていますpublic static class ReflectionHelper

[DebuggerStepThrough]
public static bool Exists(string propertyName, object srcObject)
{
    PropertyInfo propInfoSrcObj = srcObject.GetType().GetProperties()
        .FirstOrDefault(p => p.Name == propertyName); //-- Debugger stops here
    return (propInfoSrcObj != null);
}

ここに画像の説明を入力 このコードのステップスルーを回避するにはどうすればよいですか? 私の現在の回避策は、 SHIFT+F11でデバッグを再開する前にステップアウトすることF11です。

これが起こっている別の例は、次のコードです。

string databaseNamePair = split.Find(f => f.StartsWith("Initial Catalog")); 
4

1 に答える 1

2

これらの Linq ステートメントには、メソッド呼び出しにコンパイルされるラムダ式が含まれています。したがって、属性はこれらの個別のメソッドには適用されません。

ラムダを本格的なメソッドに変換して、その属性でタグ付けできると思いますが、コードが醜くなります。

于 2013-07-23T02:50:59.537 に答える