c# - 如何使用 Automapper 映射复杂对象?

标签 c# automapper

我有几个类:

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

    public string LastName { get; set; }

    public Product Product { get; set; }
}

public class Product
{
    public string Name { get; set; }
}


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

    public string LastName { get; set; }

    public Article Article { get; set; }
}

public class Article
{
    public string ArticleName { get; set; }
}

还有一个例子:

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

我想将此实例映射到 Customer_ 对象,其中 Customer.Product.Name = Customer_.Article.ArticleName

我使用自动映射器:

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Product, Article>()
    .ForMember(dest => dest.ArticleName, opt => opt.MapFrom(src => src.Name));

});

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

但我有一个异常(exception):

Missing type map configuration or unsupported mapping.

Mapping types:
Customer -> Customer_
Xml_Test.Customer -> Xml_Test.Customer_

Destination path:
Customer_[][0]

Source value:
Xml_Test.Customer

怎么了?

最佳答案

这应该可以解决问题-

AutoMapper.Mapper.CreateMap<Product, Article>()
            .ForMember(a => a.ArticleName, b => b.ResolveUsing(c => c.Name));
AutoMapper.Mapper.CreateMap<Customer, Customer_>()
            .ForMember(a => a.Article, b => b.ResolveUsing(c => c.Product));

关于c# - 如何使用 Automapper 映射复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37264049/

相关文章:

python - .net automapper 有 python 实现吗?

c# - Automapper 不映射基础

c# - 使用存储库的对象映射器

c# - 升级后,Automapper 继承映射不​​起作用。 V3.3.1.0 -> V4.0.4.0

asp.net-core - 如何在 AutoMapper 配置文件类中注入(inject)服务

c# - 如何从字符串中提取字符范围

c# - 使图表图例代表两种颜色

c# - Entity Framework 中导航属性延迟加载的逻辑

c# - 获取所有包含标志

C# 游戏网络库