我们使用.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;
}这种类型的参数验证成为一种常见的模式,并导致在我们的公共方法中需要处理许多“几乎是样板”的代码。
如果没有内置任何东西。有没有什么很棒的免费库可以供我们使用?
发布于 2010-08-03 20:31:05
您可以使用像Post Sharp这样的il编织器,请记住,在C# 5中,编译器作为一种服务将使这种东西成为内置的东西。
就我个人而言,我不推荐这种方法,除非问题很严重,必须解决。通常,像上面描述的那样执行一些断言和检查前提条件是一种最佳实践。
例如:
public ConnectionSettings(
[NotNullOrEmpty] string url,
[NotNull] string username,
[NotNull] string password,
bool checkPermissions)
{
this.url = url;
this.username = username;
this.password = password;
this.checkPermissions = checkPermissions;
}您还可以将这类内容与code contracts集成,这将允许您执行一些丰富的静态分析。
https://stackoverflow.com/questions/3396303
复制相似问题