C#:参数验证:null /空字符串

cor*_*ore 17 c# string argument-validation

我不知道有多少次我不得不编写代码来验证字符串参数:

public RoomName(string name)
{
    if (string.IsNullOrEmpty(name))
    {
        throw new ArgumentException("Cannot be empty", "name");
    }
}
Run Code Online (Sandbox Code Playgroud)

反正有没有避免这个?是否有一些属性或设计合同机制来避免这种情况?有没有办法说:

public RoomName(NotNullOrEmptyString name)
{
Run Code Online (Sandbox Code Playgroud)

而不必实际创建该类型?

Ree*_*sey 7

您可以通过代码注入属性来实现.

保存一些编码时间,但仍然给你很多控制的另一种选择是使用像CuttingEdge.Conditions这样的东西.这为参数检查提供了流畅的接口,因此您可以编写:

name.Requires().IsNotNull();
Run Code Online (Sandbox Code Playgroud)


Rob*_*vey 0

另请参阅C#:如何实现和使用 NotNull 和 CanBeNull 属性,以获取有关代码契约、如何在 VS2008 中实现它们以及如何将它们集成到 VS2010 中的更多信息。