【发布时间】:2022-06-25 05:22:51
【问题描述】:
问题
AutoMapper v10.1.1
我有一个 AutoMapper 配置文件,它需要来自其源的扩展方法(在本例中为 NickName())才能完成映射。这个方法会故意抛出一个 NullReferenceException 来说明 AutoMapper 似乎正在吞噬这个异常。从我的服务 (MyService) 调用映射器时,它永远不会被引发。
示例
来电
mapper.Map<Person>(person)
将返回一个填充了 Name 属性并将 NickName 属性设置为 null 的 Person 对象,尽管在映射过程中引发了 NullReferenceException。
映射配置文件
public class PersonMappingProfile : Profile
{
CreateMap<DataStorePerson, Person>()
.ForMember(destinationMember => destinationMember.Name, options => options.MapFrom(source => source.Name))
.ForMember(destinationMember => destinationMember.NickName, options => options.MapFrom(source => source.NickName()));
}
服务
public class MyService()
{
private IMapper mapper;
public MyService(IMapper mapper)
{
this.mapper = mapper;
}
public Person GetPerson()
{
var person = dataStore.GetPerson();
return mapper.Map<Person>(person); // EXPECTED NULL REF EXCEPTION to be thrown here
}
}
扩展方法
public static class PersonExtensions
{
public static string NickName(this DataStorePerson person)
{
throw new NullRefenceException("This exception is swallowed by AutoMapper");
}
}
如何让 AutoMapper 将异常抛回给调用者?
【问题讨论】:
-
只是不要使用扩展方法。
-
有什么特别的原因吗?
-
我已经把你的问题句移到了一个明显的地方。乍一看很像错误报告,因为我找不到问题。
标签: c# automapper