我有一个方法可以将 string.IsNullOrWhiteSpace(string value) 转换为扩展方法。
public static bool IsNullOrWhitespace(this string source)
{
return string.IsNullOrWhiteSpace(source);
}
在我使用它检查 null 之后,Resharper 仍然警告我作为 [NotNull] 参数传递的变量可能为 null。
"Possible 'null' assignment to entity marked with 'NotNull' attribute"
如果我用原始的 (string.IsNullOrWhiteSpace(str)) 替换我的使用 (str.IsNullOrWhiteSpace()),则不会出现警告。
Resharper 有没有办法让我训练它知道我的扩展方法是一个有效的空检查器,这样这个空分配警告就不会出现?
笔记:
- 我不想在任何地方都用 //resharper 禁用评论来隐藏它。
- 我不想完全禁用它,因为它应该在我不进行空检查时出现。
编辑:
JetBrains.Annotations NuGet 包中有一个名为 ContractAnnotation 的属性可以解决问题。
[ContractAnnotation("source:null => true")]
public static bool IsNullOrWhitespace(this string source)
{
return string.IsNullOrWhiteSpace(source);
}
这可以解决问题。