1

静的分析中にチェックするSystem.Reflectionクラスとメソッドをコードコントラクトの構築に使用できますか?私はそのような契約を定義したいと思います:

[ContractInvariantMethod]
private void ObjectInvariant()
{
    Contract.Invariant(GetType().GetMethods().Any(x => x.Name == "Add"),"Error");
}

アプリケーションを実行すると、この条件がチェックされます。ただし、コンパイル時にはチェックされません。どういうわけか、そのような契約の静的チェックを有効にできますか?

4

3 に答える 3

2

技術的な制限については認識していませんが、これは最善の解決策ではありません。コード コントラクトは、型のメソッドのような (事実上) 不変のものではなく、実行時の状態または変更をチェックするためのものです。

代わりに、メソッドをチェックする単体テストを作成するか、FXCopのような静的分析ツールでルールを作成します。

于 2012-09-04T02:51:03.617 に答える
0

以下はかなり古い投稿ですが、まだ有効なようです。「静的チェッカーはリフレクションを使用して契約を検証しません」と書かれています。

于 2012-09-26T15:35:30.503 に答える
0

Code Contracts は、設計上の欠陥を修正するためのものではありません。クラスは、Addメソッドを含むインターフェイスを実装する必要があります。

于 2012-09-04T03:01:18.493 に答える