我想使用自定义助手来简化参数验证,如下所示。
public static void ThrowIfNull(this object value, string parameterName)
{
if (value == null)
{
throw new ArgumentNullException(parameterName);
}
}但是,静态代码分析当然不知道我在使用此助手时确实验证了公共方法中的输入,因此它给出了关于未被验证的公共方法参数的CA1062错误。
特别的问题是这一个。
有没有一种方法可以教代码分析器这个助手处理参数空验证?这个问题的适当解决办法是什么?
发布于 2017-05-16 15:42:57
创建具有以下名称的属性:
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
public sealed class ValidatedNotNullAttribute : Attribute {}然后将其应用于正在验证的参数:
public static void ThrowIfNull([ValidatedNotNull] this object value, string parameterName)
{
if (value == null)
{
throw new ArgumentNullException(parameterName);
}
}警告应该消失了。
您可以看到许多库都使用这个属性,包括.net框架本身,例如这里。
https://stackoverflow.com/questions/44005383
复制相似问题