使用工厂在ValueInjecter中创建新对象

时间:2017-04-17 22:49:50

标签: valueinjecter

使用格式时......

var customerInput = Mapper.Map<CustomerInput>(customer); 

使用Activator.CreateInstance创建CustomerInput。我认为应该有一种方法来使用工厂来创建这些对象。所以我们想......

var customerInput = Mapper.Map<ICustomerInput>(customer); 

...我们可以使用工厂将ICustomerInput映射到“新”CustomerInput。

有没有办法用ValueInjecter做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用“附加参数”功能:

var customer = Mapper.Map<Customer>(foo, new Customer { ... });

您可以在AddMap中使用此参数,如下所示:

Mapper.AddMap<Foo, Customer>((src, tag) =>
    {
        var res = (Customer)tag;
        res.InjectFrom(src);
        res.A = src.B + src.C; 

        ...
        return res;
    });