one*_*run 7 .net c# automapper automapper-5
我有要映射的类,但它们没有默认的构造函数,我不希望它们有.这是因为我只映射到现有对象/从现有对象映射.
public class Order
{
public string OrderName { get; set; }
public Order(string name)
{
this.OrderName = name;
}
}
public class OrderProcessor
{
private IService service;
public string OrderName { get; set; }
public OrderProcessor(IService service)
{
this.service = service;
Mapper.Initialize(config => config.CreateMap<Order, OrderProcessor>());
}
public void Init()
{
var order = this.service.GetOrder();
// this works
Mapper.Map(order, this);
// this fails
Mapper.Configuration.AssertConfigurationIsValid();
}
}
Run Code Online (Sandbox Code Playgroud)
AutoMapper.AutoMapperConfigurationException:找到未映射的成员.查看下面的类型和成员.添加自定义映射表达式,忽略,添加自定义解析程序或修改源/目标类型对于无匹配的构造函数,添加无参数ctor,添加可选参数或映射所有构造函数参数
订单 - > OrderProcessor(目标成员列表)
没有可用的构造函数.
在Tests.cs中的Test():行
当我不想创建新对象时,如何使配置断言传递以及失败的原因?
And*_*uus 15
最近在从Automapper 4.x升级到6.x之后,我偶然发现了这个问题.
您需要告诉AutoMapper您不打算通过调用来构造目标类型CreateMap<TSource, TDest>().DisableCtorValidation().
根据方法文档:
// Summary:
// Disable constructor validation. During mapping this map is used
// against an existing destination object and never constructed itself.
//
Run Code Online (Sandbox Code Playgroud)