7

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

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

有什么办法可以不产生这种静态的丑陋?

4

2 回答 2

9

虽然我个人觉得它很难看,但你可以做的是以下几点:

public MyDestinationType(MySourceType source)
{
    Mapper.Map<MySourceType, MyDestinationType>(source, this);
}
于 2015-04-23T13:44:13.307 回答
0

我使用以下方法实现了这一点:

public MyDestinationType(MySourceType source)
{
    var mapperConfiguration = new MapperConfiguration(cfg =>
    {
        cfg.CreateMap<MySourceType, MyDestinationType>();
    });

    var mapper = mapperConfiguration.CreateMapper();

    mapper.Map(source, this);
}
于 2021-05-29T10:50:38.463 回答