Resharper 8:使用ContractAnnotationAttribute进行验证方法

时间:2015-01-09 08:42:24

标签: c# resharper

我有一种验证RegEx的方法:

private string _value;
private void ValidateFormat(RegEx pattern)
{
  if (!pattern.IsMatch(_value)
    throw new Exception("...");
}

现在ReSharper将pattern参数标记为“参数'模式'仅用于前置条件检查”。
在互联网上搜索我找到了使用ContractAnnotationAttribute的解决方案(参见herehere)。

但我仍然无法让它适用于这个具体案例 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我认为你不会在这里得到任何帮助。 ContractAnnotation属性可用于将方法标记为“断言”方法,这意味着该方法的重点是断言某些内容并在其失败时抛出。这有助于分析,例如删除前置条件检查,但也告诉调用传递null的代码会产生死代码等。

不幸的是,您在这里检查的前提条件很复杂,无法在ContractAnnotation中建模。我的建议是忽略ReSharper的警告,无论是什么都不做,或者告诉ReSharper禁用该段代码的警告(alt + enter,抑制注释)