Класс контракта должен быть абстрактным классом

Следующий код дает мне предупреждение Contract class 'FooContracts 'должен быть абстрактным классом . Из всех примеров, которые я читал в Интернете (например, 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 со следующими настройками в разделе Контракты кода свойств проекта:

  • Выполнить проверку контракта времени выполнения (установлено значение Полный )
  • Выполнение статической проверки контракта (в разделе Статическая проверка )
  • Проверка в фоновом режиме

Я также определил символ компиляции CONTRACTS_FULL , чтобы ReSharper отключился.

Мне что-то не хватает для компиляции без предупреждений?

7
задан tmont 4 September 2010 в 00:48
поделиться