Используя атрибуты аннотаций кода Resharper, я пытаюсь написать атрибут ContractAnnotation для метода, который всегда будет возвращать значение null, если входные данные равны нулю, но будет возвращать либо значение null, либо значение, если входные данные не равны нулевой. Что-то типа:
[ContractAnnotation("null => null; notnull => null||notnull")]
Я бы просто написал это отдельно:
[ContractAnnotation("null => null")]
За исключением того, что в соответствии с аннотациями к контракту в ReSharper 7 это будет автоматически дополнено чем-то недопустимым:
null => null
опускает имя параметра, если параметр только один. По сути,null => null
означает, что если параметр имеет значениеnull
, возвращаемое значение метода также равноnull
. Обратите также внимание, что эта аннотация автоматически дополняетсяnotnull => notnull
.
Как я могу написать атрибут ContractAnnotation
, чтобы указать, что он не может быть уверен, какое возвращаемое значение, когда вход notnull
?
Или, в качестве альтернативы, как я могу остановить автоматическое дополнение моей аннотации null => null
notnull => notnull
Дополнительный вопрос:
Как я мог написать что-то вроде следующего:
[ContractAnnotation("null => true; notnull => true||false")]
Или в таком случае будет ли этого достаточно, поскольку оно автоматически не дополняется обратным?
[ContractAnnotation("null => true")]