Я использую кодовый контракт (на самом деле, изучая его).
Я сталкиваюсь с чем-то странным для меня... Я переопределяю метод, определенный в сторонней сборке. Я хочу добавить инструкцию Contract.Require
следующим образом:
public class MyClass: MyParentClass
{
protected override void DoIt(MyParameter param)
{
Contract.Requires<ArgumentNullException>(param != null);
this.ExecuteMyTask(param.Something);
}
protected void ExecuteMyTask(MyParameter param)
{
Contract.Requires<ArgumentNullException>(param != null);
/* body of the method */
}
}
Однако я получаю такие предупреждения:
Предупреждение 1 CodeContracts: Метод 'MyClass.DoIt(MyParameter)' переопределяет MyParentClass.DoIt(MyParameter)) ', поэтому не может добавить Requires.
[edit] немного изменил код, чтобы показать альтернативные проблемы [/edit]
Если я удалю Contract.Requires
в методе DoIt, я получаю еще одно предупреждение, говоря, что мне нужно предоставить недоказанный param != null
Я не понимаю этого предупреждения. В чем причина, и могу ли я ее решить?