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

using a factory to create new objects in ValueInjecter

使用格式时...

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

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

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

...我们可以使用工厂将 ICustomerInput 映射到 "new" CustomerInput。

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

您可以为此使用 "additional parameters" 功能:

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