如今,"流畅的界面"是一个相当热门的话题.C#3.0有一些很好的功能(特别是扩展方法)可以帮助你制作它们.
FYI,一个流畅的API意味着每个方法调用返回一些有用的东西,通常是你调用方法的同一个对象,所以你可以继续链接.Martin Fowler的与Java实例讨论它在这里.这个概念就像这样:
var myListOfPeople = new List<Person>();
var person = new Person();
person.SetFirstName("Douglas").SetLastName("Adams").SetAge(42).AddToList(myListOfPeople);
Run Code Online (Sandbox Code Playgroud)
我在C#中看到了一些非常有用的流畅接口(一个例子是用于验证早先在我问过的StackOverflow问题中找到的参数的流畅方法.它让我感到震惊.它能够为表达参数验证规则提供高度可读的语法,并且另外,如果没有例外,它可以避免实例化任何对象!所以对于"正常情况",开销非常小.这一小窍门在短时间内教会了我很多.我想找到更多的东西像那样).
所以,我想通过观察和讨论一些优秀的例子来了解更多.那么,你在C#中制作或看到的一些优秀的流畅界面,是什么让它们如此有价值?
谢谢.
在我的代码中我做了很多:
myfunction (parameter p)
{
if(p == null)
return;
}
Run Code Online (Sandbox Code Playgroud)
我如何用代码合同替换它?
我有兴趣找出是否已传入null并通过静态检查捕获它.
如果在测试期间传入null,我有兴趣抛出合同异常
对于生产我想退出该功能.
代码合同可以做到这一点吗?这对代码合同有用吗?
我非常厌倦检查我的所有参数为null,并在它们出现时抛出ArgumenutNullExceptions.
据我了解,C#4.0通过契约构造实现了一些设计.是否可以指定方法不接受C#4.0中的空参数?
另外,在此期间我可以做些什么(也许是一个属性?)来避免这种单调的检查null和抛出的任务?