我可以在代码合同构造中使用System.Reflection类和方法,它可以在静态分析期间检查吗? 我想定义的合同那样:在代码合同中使用System.Reflection静态分析
[ContractInvariantMethod]
private void ObjectInvariant()
{
Contract.Invariant(GetType().GetMethods().Any(x => x.Name == "Add"),"Error");
}
当我运行的应用程序,来检查这个条件。 但在编译过程中未检查。 我可以以某种方式启用这种合同的静态检查吗?
Thanks.Can我可以这样定义一条规则:“如果MyClass派生自SomeBaseClass,它应该包含使用FxCop的MyClass类型的Field1 Field”。 – mao
这可能与FXCop,但它可能是矫枉过正的问题中的例子。如果你想要求一个方法或属性存在,就像Steven在他的回答中所说的那样使用一个接口。如果您想确保方法不存在,就像在您的问题中一样,使用反射的自动单元测试是最简单的解决方案。 – akton
我100%同意。代码分析检查二进制代码。这不是类实例的契约,而是类的实现的二元(代码分析)*规则*。 –