【发布时间】:2011-03-24 16:52:33
【问题描述】:
我们使用 .NET 2.0 框架和 C# 3.0(我认为这是可以在 2.0 版本框架上运行的 C# 的最后一个版本,如果我错了,请纠正我)。
C# 中是否有内置的东西可以使这种类型的参数验证更方便?
public ConnectionSettings(string url, string username, string password,
bool checkPermissions)
{
if (username == null) {
throw new ArgumentNullException("username");
}
if (password == null) {
throw new ArgumentNullException("password");
}
if (String.IsNullOrEmpty(url)) {
throw new ArgumentException("Must not be null or empty, it was " +
(url == null ? url : "empty"), "url");
}
this.url = url;
this.username = username;
this.password = password;
this.checkPermissions = checkPermissions;
}
这种参数验证成为一种常见模式,并导致在我们的公共方法中涉及大量“几乎是样板”的代码。
如果没有内置任何东西。有什么很棒的免费库可供我们使用吗?
【问题讨论】:
-
我认为需要更改此行以避免空引用异常? (url == null ? url : "空"), "url"); to (url == null ? "null" : "empty"), "url");
-
您正在寻找面向方面的编程工具。我知道有一些可以与 Visual Studio 集成,并在编译时将代码注入您的程序集 IL。但今天早上我的谷歌似乎无法正常工作。
-
你应该能够敲出一些方便的方法来提供大部分功能,但我同意,为此最好有一些合成糖。我特别讨厌为 string.IsNullOrEmpty 的两种情况抛出两个单独的异常
-
不要满足于任何让您将参数名称放在字符串中的东西。它最终会与真实姓名不同步,而使用 lambda 表达式可以自动确定正确的姓名。
标签: c# parameters parameter-passing