【发布时间】:2013-03-06 11:16:59
【问题描述】:
我今天阅读了有关 C# 4.0 代码合同的信息。似乎验证方法的参数不为空的常见做法如下:
Contract.Requires(p != null);
但是对我来说,我必须对代码中每个接口方法的每个参数都执行此操作似乎很不合理。在绝大多数情况下,参数不应为空。我希望会有某种机制允许定义某些特定参数“允许”为空(类似于 Java 中的“@Nullable”注释),并且合同框架将自动确保其余的不是空。
除了在这种“样板检查”(以及许多“合同类”上节省大量时间,因为很多时候除了非空参数之外根本没有任何条件需要验证)之外,它还会使合约代码更简洁,更“面向逻辑”。
我的问题是,有没有办法做到这一点,如果没有,哪里没有,或者为什么我的方法在这里是错误的?
【问题讨论】:
-
它会很有用,但是没有任何简写可以做到这一点,因为没有人更改语言规范以提供一个,然后实现它并发布它。请参阅 Eric Lippert 对类似问题的回复:stackoverflow.com/questions/2806894/…
-
您可以使用
crnsn-p 为这些非空语句自动生成样板,从而减少了一点输入。
标签: c# c#-4.0 code-contracts