5

私には、次のような流暢で拡張可能な検証ヘルパーがいます。

Assert.That(aParameter).IsNotNull();

Thatメソッドは実際にはジェネリック(That <T>)であり、暗黙的な型指定を使用してジェネリックIAssertCondition <T>オブジェクトを返すため、拡張可能です。IsNotNullは、実際には拡張メソッドです。

とにかく、メソッドに渡されたパラメーターを検証するためにこのアプローチを使用する際の問題は、引数を使用する前に引数を検証するように指示するCA1062警告が表示されることです。もちろん、これはすでに実行しています。

ValidatedNotNullAttributeを使用して引数が検証されていることをFxCopに通知することについてのEricSmithの投稿(ここ)を読みましたが、説明した流暢なインターフェイスを使用してこれを実現する方法がわかりません。

上記のステートメントが要件を満たし、警告が表示されないことをコード分析が認識するための私のオプションは何ですか?

4

1 に答える 1

4

この場合に属性を追加できる唯一の場所は、That<T>メソッドのパラメーターです。残念ながら、これによりCA1062の起動が妨げられますが、That<T>実際に「null以外」の検証を実装するだけでなく、それ以上の呼び出しが必要になるため、フォールスネガティブが発生する可能性があります。コード分​​析を使用して、検証ヘルパーを認識する方法でパラメーター検証を適切にチェックする場合は、CA1062を置き換える独自のルールを作成する必要があります。

于 2011-11-23T16:05:27.480 に答える