【问题标题】:Define mapping array定义映射数组
【发布时间】:2016-05-15 03:19:09
【问题描述】:

我有两个班级:

public class Customer
{
    public string FirstName { get; set;  }

    public string LastName { get; set; }
};

public class Customer_
{
    public string FirstNam { get; set; }

    public string LastNam { get; set; }
}

还有我班级的一个实例Customer

Customer[] Customer = new Customer[]
{
    new Customer()
    {
        FirstName = "FirstName1",
        LastName = "LastName1"
    },
    new Customer()
    {
        FirstName = "FirstName2",
        LastName = "LastName2"
    }
};

我想将我的对象 Customer 映射到我的对象 Customer_ 的一个实例。

我使用 Automapper:

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Customer, Customer_>();
});

IMapper mapper = config.CreateMapper();
var dest = mapper.Map<Customer[], Customer_[]>(Customer);

但对象dest 有两个索引为空

如何创建地图并定义映射?例如:Customer.FirstName = Customer_.FirstName ...等

编辑:

我在我的类 Customer 中添加了一个新属性 Quantity(类型 int),并在我的实例中添加了一个值。现在,我只想映射数量 > x

的客户
Customer[] Customer = new Customer[]
{
    new Customer()
    {
        FirstName = "FirstName1",
        LastName = "LastName1",
        Quantity = 11
    },
    new Customer()
    {
        FirstName = "FirstName2",
        LastName = "LastName2",
        Quantity = 5
    }
};

怎么办?

【问题讨论】:

  • 为什么第二种类型的属性拼写不同?
  • 用于测试 Automapper :)

标签: c# arrays automapper


【解决方案1】:

documentation 相当清楚地概述了这一点。

由于目标属性的名称与源属性不完全匹配...,我们需要在类型映射配置中指定自定义成员映射:

cfg.CreateMap<Customer, Customer_>()
   .ForMember(dest => dest.FirstNam , opt => opt.MapFrom(src => src.FirstName))
   .ForMember(dest => dest.LastNam , opt => opt.MapFrom(src => src.LastName))

请注意,如果需要,您还必须明确映射到 other 方向。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 2023-01-14
    • 2021-04-09
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    相关资源
    最近更新 更多