gpt4 book ai didi

c# - 更好的参数检查方式?

转载 作者:太空狗 更新时间:2023-10-29 18:12:45 27 4
gpt4 key购买 nike

我们使用 .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;
}

这种参数验证成为一种常见模式,并导致在我们的公共(public)方法中费力地处理大量“几乎是样板文件”的代码。

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

最佳答案

我通常创建静态辅助方法...

例如

public static void CheckNotNull(object value, string parameterName)
{
if(value == null) { throw new ArgumentNullException(parameterName); }
}

意味着您可以将您的代码压缩成类似于下面的内容,只是让它更整洁一些。

CheckNotNull(username, "username");
CheckNotNull(password, "password");

或者你可以把它包装成一个扩展方法:

public static void CheckNotNull<T>(this T value, string parameterName)
{
if(value == null) { throw new ArgumentNullException(parameterName); }
}

然后像这样使用:

username.CheckNotNull("username");
password.CheckNotNull("password");

如果您真的很喜欢,您可以使用反射来查询参数名称。反射有点慢,所以只有在您要抛出异常时才这样做,但它可以让您免于一直输入文字参数名称。

关于c# - 更好的参数检查方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com