如何在构造函数

时间:2015-04-23 13:37:14

标签: c# automapper automapper-2 automapper-3

我有一个源类型,其属性和目标类型具有完全相同的属性。

为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);
}

有没有办法不让这种静态的丑陋?

2 个答案:

答案 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);
}