【发布时间】:2023-03-03 03:09:01
【问题描述】:
ReSharper 声称我对 serviceProvider 的空值检查总是正确的,这很奇怪。我认为 serviceProvider 很可能是空的。我在这里错了吗,还是这是一个 ReSharper 错误?
public override object ProvideValue(IServiceProvider serviceProvider)
{
switch (Mode)
{
case BindingMode.TwoWay:
throw new InvalidOperationException("Invalid binding mode.");
case BindingMode.OneWayToSource:
throw new InvalidOperationException("Invalid binding mode.");
case BindingMode.OneWay:
case BindingMode.OneTime:
break;
case BindingMode.Default:
if (serviceProvider != null) // Expression is always true?? O.o
{
// Returns something possibly...
}
throw new InvalidOperationException("Invalid binding mode.");
default:
throw new InvalidOperationException("Unexpected binding mode.");
}
return base.ProvideValue(serviceProvider);
}
更新:
我创建了一个控制台应用程序,以下代码也给出了警告(来自 ReSharper)Possible null assignment to entity marked with 'NotNull' attribute.
var binding = new CustomBinding();
binding.ProvideValue(null);
【问题讨论】:
-
听起来像一个 R# 错误,除非你没有显示完整的代码?
-
好吧,你能给它一个空值并确认它是错误的吗?
-
@Jonesy:如果我也尝试传入 null,ReSharper 会警告我。
标签: c# .net-4.5 resharper-8.0