Lambda抑制CA1062

时间:2016-05-13 21:18:03

标签: c# lambda code-analysis fxcop

我注意到在lambda体中使用公共方法的参数的简单行为会错误地抑制有关CA1062的警告:验证公共方法的参数。以下代码不会在VS2013中生成违规警告。

public void BusinessLogic(MyType maybeNull)
{
    Func<object> validated = () => maybeNull;
    maybeNull.DoSomething();
}

这主要不是因为你可能每隔一段时间就会得到一个假阴性,但是因为我专门研究基于表达式的验证助手方法,用于检查传入表达式为null的单行保护子句然后使用一些反射技巧来输出具有正确参数名称的ArgumentNullException。它看起来像ValidateNotNull(()=>maybeNull);。 lambda隐藏违规的事实意味着我无法判断我是否以FxCop理解的方式实现它。

我猜测将参数包装到类中,编译器为闭包生成的类必须干扰。

FxCop是否应该忽略这一点,或者它只是我目前认为的错误?

0 个答案:

没有答案