由于历史原因,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)
前面的代码通知调用者返回值实际上可能是零。它还通知编译器该方法可能返回a
null
表达式,即使类型是非空的。
来自c#编译器解释的空状态静态分析的属性
显然,由于该类型来自外部库,您只能通过修改外部源代码来应用该属性。
你应该要求开发人员在将来的版本中添加这个属性。