说我有以下类层次结构:
public class FooBase
{
private readonly object _obj;
protected FooBase(object obj)
{
Contract.Requires(obj != null);
_obj = obj;
}
}
public class Foo : FooBase
{
public Foo(object obj) : base(obj)
{
}
}
编译时,出现
Foo
的以下CodeContracts错误:Error 12 CodeContracts: Missing precondition in an externally visible method. Consider adding Contract.Requires(obj != null); for parameter validation
有什么方法可以使CodeContracts认识到验证已在基类中进行?
最佳答案
不幸的是没有。
您的Foo在没有适当要求的情况下调用FooBase(obj)。
public class FooBase
{
private readonly object _obj;
protected FooBase(object obj)
{
Contract.Requires(obj != null);
_obj = obj;
}
}
public class Foo : FooBase
{
public Foo(object obj) : base(obj)
{
Contract.Requires(obj != null);
}
}
将是解决此问题的唯一方法。
关于c# - CodeContracts错误地标记缺少基本构造函数中已经存在的前提条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30478071/