次のコードは私に警告を与えますContract class 'FooContracts' should be an abstract class
。私がオンラインで読んだすべての例(たとえば、http: //www.infoq.com/articles/code-contracts-csharp)から、これは機能するはずです(おそらくコンパイラの警告なしで)。
[ContractClass(typeof(FooContracts))]
public interface IFoo {
void Bar(string foo);
}
[ContractClassFor(typeof(IFoo))]
internal sealed class FooContracts : IFoo {
void IFoo.Bar(string foo) {
Contract.Requires(foo != null);
}
}
私はVisualStudio2010を使用しておりCode Contracts
、プロジェクトのプロパティのセクションに次の設定があります。
- ランタイムコントラクトチェックを実行します(に設定
Full
) - 静的コントラクトチェックを実行します(の下
Static Checking
) - バックグラウンドでチェックイン
CONTRACTS_FULL
また、 ReSharperをシャットダウンするためのコンパイルシンボルを定義しました。
警告なしにこのコンパイルを行うための何かが欠けていますか?