【发布时间】:2019-12-01 03:44:25
【问题描述】:
框架提供了一些可以返回null的方法。如果之前没有进行空检查,ReSharper 通常会通过警告告诉您这是 Possible 'System.NullReferenceException'。
一个例子是Type.GetType()。这个方法只需要一个字符串作为参数,它是类型名称并返回相应的Type。如果找不到类型,则返回 null。这是 ReSharper 通知可能的 NullReferenceException 的示例。
但是这个方法有另一个重载,它需要另一个名为 throwOnNull 的布尔参数。如果设置为 true,来自 ReSharper 的警告将消失。
有没有办法在我自己的库中实现这种机制?我们在HttpContext 上有一个包含一些扩展方法的库。其中一些扩展方法可以返回 null。
【问题讨论】:
-
我不确定这是否是硬编码的知识。但是您可以使用
[NotNull]和[CanBeNull]告诉 resharper 预期的行为。有关更多信息,请参阅here。但我没有看到添加[CanBeNull]有任何限制的解决方案。