有代码合同的条件属性例外
我在下面的代码中使用代码合同时收到异常:
public void Debug(
dynamic message1,
dynamic message2 = null,
dynamic message3 = null,
dynamic message4 = null,
dynamic message5 = null,
dynamic message6 = null)
{
Contract.Requires(message1 != null,
"First Logged Message cannot be null");
}
我正在尝试配置项目设置,以便在运行时完成检查。
例外是“无法动态调用方法”需要'因为它具有条件属性“。 我几次重新阅读代码合同文档并完成了一些搜索,但我不明白条件属性来自哪里。
Requires方法的条件属性是Conditional("CONTRACTS_FULL")
。 当您打开合同时,CONTRACTS_FULL符号被传递给编译器。 我假设你不能在条件方法中使用动态分派的原因,是因为它们是在运行时编译的,运行时无法将这些符号传递给编译器。 (只是猜测)。
通过将message1分配给本地(非动态)变量(可能是对象),您可能可以很容易地解决这个问题。
object m1 = message1;
Contract.Requires(m1 != null, "First Logged Message cannot be null");
我遇到同样的问题,而不是创建一个变量赋值我可以将动态转换为requires条件参数中的对象。
dynamic message1;
Contract.Requires((object)message1 != null,"First Logged Message cannot be null");
链接地址: http://www.djcxy.com/p/59597.html