我有一个将string.IsNullOrWhiteSpace(字符串值)转换为扩展方法的方法。
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我可以训练它知道我的扩展方法是一个有效的空检查器,以便这个空分配警告不显示?
注意:
编辑:
JetBrains.Annotations NuGet包中有一个名为ContractAnnotation的属性可以解决问题。
[ContractAnnotation("source:null => true")]
public static bool IsNullOrWhitespace(this string source)
{
return string.IsNullOrWhiteSpace(source);
}
这就是诀窍。
答案 0 :(得分:2)
发现它!
JetBrains.Annotations NuGet包中有一个名为ContractAnnotation的属性可以解决问题。
[ContractAnnotation("source:null => true")]
public static bool IsNullOrWhitespace(this string source)
{
return string.IsNullOrWhiteSpace(source);
}
这就是诀窍。
答案 1 :(得分:1)
除非,如果您要删除警告(ReSharper v2016.2),它应该是false
而不是true
,如答案中所示。
[ContractAnnotation("parameterName:null => false")]
而不是
[ContractAnnotation("parameterName:null => true")]
答案 2 :(得分:0)
这是因为你仍然可以打电话
((string)null).IsNullOrWhiteSpace()
和Resharper有关。
重写代码:
(source == null) || string.IsNullOrWhiteSpace(source)
也许它会停止抱怨。