使c#编译器意识到一个空无关的方法可能返回null?



由于历史原因,AutoMapper的T IMapper.Map<T>(object)是空无关的。如果通过null,则结果为null。当从声明返回T的方法返回Map的结果时,c#编译器不会警告可能的null返回。

是否有办法使编译器对待Map,如果它已被声明为T? IMapper.Map<T>(object?)?我想把IMapper包装在一个不同的界面中,然后注入它,但这似乎有点笨拙。

可以使用MaybeNull属性

微软文档使用了这个例子:

[return: MaybeNull]
public T Find<T>(IEnumerable<T> sequence, Func<T, bool> predicate)

前面的代码通知调用者返回值实际上可能是零。它还通知编译器该方法可能返回anull表达式,即使类型是非空的。

来自c#编译器解释的空状态静态分析的属性


显然,由于该类型来自外部库,您只能通过修改外部源代码来应用该属性。

你应该要求开发人员在将来的版本中添加这个属性。

相关内容

  • 没有找到相关文章

最新更新