我正在使用代码合同(实际上,学习使用这个).
我正在面对一些奇怪的东西,我覆盖了一个在第三方大会定义的方法.我想添加一个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 */ } }
但是,我收到如下警告:
Warning 1 CodeContracts:
Method ‘MyClass.DoIt(MyParameter)’ overrides ‘MyParentClass.DoIt(MyParameter))’,thus cannot add Requires.
如果我在DoIt方法中删除了Contract.Requires,我会收到另一个警告,告诉我我必须提供未经证实的param!= null
我不明白这个警告.是什么原因,我可以解决吗?