我想使用自定义助手来简化参数验证,就像这样。
public static void ThrowIfNull(this object value, string parameterName)
{
if (value == null)
{
throw new ArgumentNullException(parameterName);
}
}
但是,静态代码分析当然不知道我在使用此帮助程序时确实验证了公共(public)方法中的输入,因此它给我 CA1062
关于公共(public)方法参数未被验证的错误。
具体问题是 this one .
有没有办法教导代码分析器这个助手处理参数空值验证?这个问题的正确解决方案是什么?
最佳答案
使用以下名称创建属性:
[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 框架本身,例如 here .
关于c# - 使用自定义参数验证助手中断代码分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44005383/