我今天阅读了有关 C# 4.0 代码合同的信息。似乎验证方法的参数不是 null 的常见做法如下:
Contract.Requires(p != null);
但是,对我来说,我必须为代码中每个接口方法的每个参数都这样做似乎很不合理。在绝大多数情况下,参数不应为空。我希望会有某种机制允许定义某些特定参数“允许”为空(类似于 Java 中的“@Nullable”注释),并且合同框架将自动确保其余的不是无效的。
除了在这种“样板检查”(以及许多“合同类”上节省大量时间,因为很多时候除了非空参数之外根本没有任何条件需要验证)之外,它还将使合同代码更清晰并且更“面向逻辑”。
我的问题是,有没有办法做到这一点,如果没有,哪里没有,或者为什么我的方法在这里是错误的?