【问题标题】:C# - Mapper and Configuration fileC# - 映射器和配置文件
【发布时间】:2018-09-26 20:03:05
【问题描述】:

我有两个课:

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

    public string LastName { get; set; }

    public Product Product { get; set; }
}

public class Product
{
    public int ProductNumber { get; set; }

    public string ProductColor { get; set; }
}


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

    public string LastName { get; set; }

    public Article Article { get; set; }
}

public class Article
{
    public int ArticleNumber { get; set; }

    public string ArticleColor { get; set; }
}

还有一个例子:

Customer Cus = new Customer()
{
    FirstName = "FirstName1",
    LastName = "LastName1",
    Product = new Product()
    {
        ProductColor = "ProductColor1",
        ProductNumber = 11
    }
};

我想从我的实例 Cus 创建一个类 Customer_ 的实例

我使用自动映射器:

MapperConfiguration Config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Customer, Customer_>()
    .ForMember(a => a.Article, b => b.MapFrom(c => c.Product));

    cfg.CreateMap<Product, Article>()
    .ForMember(a => a.ArticleColor, b => b.MapFrom(c => c.ProductColor))
    .ForMember(a => a.ArticleNumber, b => b.MapFrom(c => c.ProductNumber));                
});

IMapper Mapper = Config.CreateMapper();
var cus_ = Mapper.Map<Customer, Customer_>(Cus);

它有效,但我想从配置文件创建 MapperConfiguration。像这样:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <Automapper>
    <Column source="Product" destination="Article"/>
    <Column source="Product.ProductColor" destination="Article.ArticleColor"/>
    ...
    ...
    ...
  </Automapper>
</configuration>

有可能吗?

【问题讨论】:

标签: c# automapper configuration-files


【解决方案1】:

使用 AutoMapper 无法立即执行此操作,但使用基于类型的 AutoMapper 版本,您当然可以这样做:

cfg.CreateMap(typeof(Customer), typeof(Customer_))
    .ForMember("Product").MapFrom("Article");

因此,您只需要遍历您的 XML,加载类型,并为每个子节点调用 MapFrom 以获得您拥有的两个字符串。

您的 XML 看起来不够完整,无法做到这一点,您需要有类似的东西:

<TypeMap SourceType="Customer" DestinationType="Customer_">
    <PropertyMap Member="Product" MapFrom="Article">
</TypeMap>

等等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    相关资源
    最近更新 更多