2017-04-17 49 views
1

新对象时使用格式...使用工厂创建于ValueInjecter

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

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

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

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

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

回答

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