Почему я не могу добавить контракт. Отрезываться в переопределенный метод?

Я использую код Кода (на самом деле, учиться, используя это).

Я сталкиваюсь с чем-то странным для меня ... Переопределяю метод, определенный в 3-й партийной сборке. Я хочу добавить 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))', таким образом, не может добавить требует.

[редактирование] немного изменена кода, чтобы показать альтернативные проблемы [/ edit]

, если я удаляю Contract.requires в методе DOIT, я Получите еще одно предупреждение, рассказывая мне, что я должен предоставить бездоказатель ! = NULL Я не понимаю это предупреждение. Что это за дело, и я могу решить это?

10
задан Cœur 16 January 2017 в 16:27
поделиться