假设我有以下类层次结构:
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认识到验证已经在基类中发生了?
答案 0 :(得分:0)
不幸的是没有。 你的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);
}
}
是解决此问题的唯一方法。