C#-映射器和配置文件
我有两门课:C#-映射器和配置文件,c#,automapper,configuration-files,C#,Automapper,Configuration Files,我有两门课: 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 Produ
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
我使用Automapper:
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 Config=新的MapperConfiguration(cfg=>
{
cfg.CreateMap()
.ForMember(a=>a.Article,b=>b.MapFrom(c=>c.Product));
cfg.CreateMap()
.FormMember(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=映射器.Map(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>
...
...
...
有可能吗?使用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>
等等。几乎任何事情都有可能。如果此链接有帮助,请告诉我