任何语言中的一个常见问题是断言发送到方法的参数满足您的要求,如果不满足,则发送好的,信息丰富的错误消息.这种代码反复重复,我们经常尝试为它创建帮助器.然而,在C#中,似乎那些帮助者被迫处理语言和编译器强加给我们的一些重复.为了表明我的意思,让我提供一些没有帮助的原始代码,然后是一个可能的帮助器.然后,我会指出帮助器中的重复并准确地说出我的问题.
首先,代码没有任何帮助:
public void SomeMethod(string firstName, string lastName, int age)
{
if(firstName == null)
{
throw new WhateverException("The value for firstName cannot be null.");
}
if(lastName == null)
{
throw new WhateverException("The value for lastName cannot be null.");
}
// Same kind of code for age, making sure it is a reasonable range (< 150, for example).
// You get the idea
}
Run Code Online (Sandbox Code Playgroud)
}
现在,代码合理地尝试帮助:
public void SomeMethod(string firstName, string lastName, int age)
{
Helper.Validate( x=> x !=null, "firstName", firstName); …Run Code Online (Sandbox Code Playgroud) 我非常厌倦检查我的所有参数为null,并在它们出现时抛出ArgumenutNullExceptions.
据我了解,C#4.0通过契约构造实现了一些设计.是否可以指定方法不接受C#4.0中的空参数?
另外,在此期间我可以做些什么(也许是一个属性?)来避免这种单调的检查null和抛出的任务?