Следующий код дает мне предупреждение 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);
}
}
Я нахожусь в Visual Studio 2010 со следующими настройками вCode Contracts
раздел свойств проекта:
- Выполнение проверки контракта во время выполнения (установлено на
Full
) - Выполнение статической проверки контракта (под
Static Checking
) - Проверка в фоновом режиме
Я также определил символ компиляции CONTRACTS_FULL
, чтобы заставить ReSharper замолчать.
Я что-то упускаю, чтобы сделать эту компиляцию без предупреждений?