CodeContracts错误标记基构造函数中已经存在的缺失前提条件
本文关键字:存在 条件 前提 错误 构造函数 CodeContracts | 更新日期: 2023-09-27 17:50:54
假设我有如下的类层次结构:
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)
{
}
}
当我编译时,我得到以下CodeContracts错误为Foo
:
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);
}
}
是解决这个问题的唯一方法。