首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更好的参数检查方式?

更好的参数检查方式?
EN

Stack Overflow用户
提问于 2010-08-03 20:13:08
回答 8查看 474关注 0票数 8

我们使用.NET 2.0框架和C# 3.0 (我认为这是可以在2.0版本的框架上运行的C#的最后一个版本,如果我错了,请纠正我)。

C#中有什么内置的东西可以让这种类型的参数验证更方便吗?

代码语言:javascript
复制
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;
}

这种类型的参数验证成为一种常见的模式,并导致在我们的公共方法中需要处理许多“几乎是样板”的代码。

如果没有内置任何东西。有没有什么很棒的免费库可以供我们使用?

EN

Stack Overflow用户

发布于 2010-08-03 20:31:05

您可以使用像Post Sharp这样的il编织器,请记住,在C# 5中,编译器作为一种服务将使这种东西成为内置的东西。

就我个人而言,我不推荐这种方法,除非问题很严重,必须解决。通常,像上面描述的那样执行一些断言和检查前提条件是一种最佳实践。

例如:

代码语言:javascript
复制
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集成,这将允许您执行一些丰富的静态分析。

票数 4
EN
查看全部 8 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3396303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档