我非常厌倦检查所有的null参数,并在它们出现时抛出ArgumenutNullExceptions。

据我了解,C#4.0通过契约构造实现了一些设计。是否可以指定方法不接受C#4.0中的空参数?

另外,在此期间我可以做些什么(可能是一个属性?)来避免这种单调的检查null和抛出的任务?

有帮助吗?

解决方案

您可以创建一个有帮助的NotNull<T>泛型类,但是有一些副作用。请参阅 Robert Nystrom的博客文章

其他提示

Rick Brewster在本文中描述了一个简洁的声明式样式参数检查的好方法,

http:// blog.getpaint.net/2008/12/06/a-fluent-approach-to-c-parameter-validation/

避免使用反射(DbC的缺点),并且不会为非异常代码路径创建开销。

就像他如何使用扩展方法来允许对null对象进行实例方法调用。非常聪明的编码IMO。

如果您在DbC,Google Spec#和PostSharp上出售。

不确定C#4.0中的原生DbC构造,但Microsoft将发布跨语言合同库。
您可以下载MSVS2008的版本此处

作为已经给出的答案的替代方案,值得研究 Null Object design pattern

这种设计模式的本质是一旦<!>“null对象<!>”;在创建时,不再需要对null执行任何检查,并且null对象的方法实现所需的行为,只要传递null(否则)vs对<!> quot的引用;真实对象<!> QUOT;

此设计模式不依赖于C#4.0,实际上几乎可以在任何OO编程语言中轻松实现

我刚开始使用Code Contracts这是C#4.0中的一项新功能,您需要从MS下载一个插件,以便您在项目设置中查看它。详情 - <!> gt; http://research.microsoft.com/en-us/projects/contracts/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top