6

通常,如果我有这个:

public string Foo(string text)
{
    return text.Substring(3);
}

CA1062: Validate arguments of public methods我会从代码分析中得到一个。它本来可以通过修改代码来解决的:

public string Foo(string text)
{
    if (text == null)
        throw new ArgumentNullException("text");
    else if (string.IsNullEmptyOrWhiteSpace(text)
        throw new ArgumentException("May not be empty or white space", "text")
    else if (text.Length < 3)
        throw new ArgumentException("Must be at least 3 characters long", "text");
    return text.Substring(3);
}

但现在我想用另一种方法来做这个验证:

public string Foo(string text)
{
    Validator.WithArgument(text, "text").NotNullEmptyOrWhitespace().OfMinLength(3);
    return text.Substring(3);
}

由于该方法验证了参数,因此代码分析规则得到满足,但您仍然会收到CA1062警告。有没有一种方法可以抑制此类情况的代码分析规则,而无需每次手动抑制它们或关闭特定的代码分析规则?

4

1 回答 1

2

一个名为的属性ValidatedNotNullAttribute可以用来指示一个参数在一个辅助方法中被验证。但是,对于流畅的验证 API,它不一定是一个很好的选择,因为您需要将其添加到错误方法的参数中(您的WithArgument方法,而不是您的NotNullEmptyOrWhitespace方法)。

于 2013-02-25T12:56:20.210 回答