我对代码合同相当陌生......我遇到了一个问题。
我有一个方法 LINQ 查询,它是这样的:
MyClass[] fields =
(from p in rType.GetProperties()
where p.CanRead
let fAttr = p.GetCustomAttributes(typeof(MyClassAttribute), true).SingleOrDefault() as MyClassAttribute
where fAttr != null
select new MyClass(p, fAttr)).ToArray();
我想在我的项目中实现代码合同。我做的一切都很好,直到我到了这一点。当我运行静态检查器时,它建议我需要添加一些关于在查询中定义的变量 p 和 fAttr 的先决条件(Contract.Requires)。而且,我还有一些未经证实的要求。
我该如何解决这个问题?有任何想法吗?
MyClass 还包含两个前提条件:
internal MyClass(PropertyInfo p, MyClassAttribute att)
{
Contract.Requires(p != null);
Contract.Requires(att != null);
...
}
提前致谢 :)