Resharper 8:使用ContractAnnotationAttribute作为验证方法

本文关键字:验证 方法 ContractAnnotationAttribute 使用 Resharper | 更新日期: 2023-09-27 18:37:03

我有一个验证正则表达式的方法:

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

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

但我仍然无法让它适用于这种特定情况。
感谢您的任何帮助!

Resharper 8:使用ContractAnnotationAttribute作为验证方法

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

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