我有一个源类型,其属性和目标类型具有完全相同的属性。
为AutoMapper配置一个简单映射后,如:
Mapper.CreateMap<MySourceType, MyDestinationType>();
我想有一个MyDestinationType的构造函数,它有一个MySourceType 参数,然后使用源自动初始化创建类型的属性,如下所示:
public MyDestinationType(MySourceType source)
{
// Now here I am do not know what to write.
}
我找到的唯一解决方法是为
创建一个静态工厂方法public static MyDestinationType Create(MySourceType source)
{
return Mapper.Map<MyDestinationType>(source);
}
有没有办法不让这种静态的丑陋?
答案 0 :(得分:7)
虽然我个人认为它很难看,但你可以做的是:
public MyDestinationType(MySourceType source)
{
Mapper.Map<MySourceType, MyDestinationType>(source, this);
}
答案 1 :(得分:0)
我使用:
public MyDestinationType(MySourceType source)
{
var mapperConfiguration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<MySourceType, MyDestinationType>();
});
var mapper = mapperConfiguration.CreateMapper();
mapper.Map(source, this);
}