如何使用锐化器代码注释属性指示结果歧义



使用 Resharper 的代码注释属性,我尝试为一个方法编写一个 ContractAnnotation 属性,如果输入为 null,它将始终返回 null,但如果输入不为 null,则将返回 null 或值。像这样:

[ContractAnnotation("null => null; notnull => null||notnull")]

我只会自己写这个:

[ContractAnnotation("null => null")]

除了根据 ReSharper 7 中的合约注释,这将自动补充无效的内容:

null => null 在只有一个参数的情况下省略参数名称。基本上,null => null意味着如果参数具有值null,则方法返回值也是null 。另请注意,此注释会自动补充 notnull => notnull

如何编写 ContractAnnotation 属性以指示在输入notnull时无法确定返回值是什么?

或者,我如何阻止它自动用notnull => notnull补充我的null => null注释


奖金问题:

我怎么能写出类似以下内容的东西:

[ContractAnnotation("null => true; notnull => true||false")]

或者在这种情况下,这是否足够,因为它不会自动与反向补充?

[ContractAnnotation("null => true")]
您可以使用

canbenull

[ContractAnnotation("null => null; notnull => canbenull")]

完整的语法是:

FDT      ::= FDTRow [;FDTRow]*
FDTRow   ::= Input => Output | Output <= Input
Input    ::= ParameterName: Value [, Input]*
Output   ::= [ParameterName: Value]* {halt|stop|void|nothing|Value}
Value    ::= true | false | null | notnull | canbenull

至于奖金问题,[ContractAnnotation("null => true")]应该足够了。说 bool -return 函数可以返回truefalse是多余的,因为它不可能返回其他任何内容。

相关内容

  • 没有找到相关文章

最新更新