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);