如何使用 Resharper CodeAnnotation 属性指示结果歧义?

How can I indicate result ambiguity with Resharper CodeAnnotation attributes?

使用 Resharper 的代码注释属性,我正在尝试为一种方法编写 ContractAnnotation 属性,如果输入为 null,该方法将始终 return null,但 return null 或一个值(如果输入不为 null)。类似于:

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

我会自己写这个:

[ContractAnnotation("null => null")]

除了根据Contract Annotations in ReSharper 7,这将自动补充一些无效的内容:

null => null omits the parameter name in cases there is only one parameter. Basically, null => null means that if the parameter has the value null, the method return value is also null. Note also that this annotation is automatically complemented with notnull => notnull.

如何写ContractAnnotation属性来表示当输入为notnull时不能确定return值是什么?

或者,我怎样才能阻止它自动用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-returning 函数可以 return truefalse 是多余的,因为它不可能 return 其他任何东西。