我正在尝试使用自动映射程序来映射到对象,问题是我试图映射的对象之一在其所有属性的前面有一个前缀'Cust_‘,而另一个没有。有没有方法进行这种映射。
例如,假设我有
class A
{
String FirstName { get; set; }
String LastName { get; set; }
}
class B
{
String Cust_FirstName { get; set; }
String Cust_LastName { get; set; }
}
显然,这张地图不能工作
AutoMapper.Mapper.CreateMap<A, B>();
b = AutoMapper.Mapper.Map<A, B>(a);
发布于 2012-02-17 09:07:57
Mapper.Initialize(cfg =>
{
cfg.RecognizeDestinationPrefixes("Cust_");
cfg.CreateMap<A, B>();
});
A a = new A() {FirstName = "Cliff", LastName = "Mayson"};
B b = Mapper.Map<A, B>(a);
//b.Cust_FirstName is "Cliff"
//b.Cust_LastName is "Mayson"
或者:
Mapper.Configuration.RecognizeDestinationPrefixes("Cust_");
Mapper.CreateMap<A, B>();
...
B b = Mapper.Map<A, B>(a);
...
发布于 2016-11-22 22:33:30
文档中有一篇关于Recognizing pre/postfixes的文章
有时,您的源/目标属性将具有共同的前缀/后缀,这会导致您必须执行一系列自定义成员映射,因为名称不匹配。要解决此问题,您可以识别前缀/后缀:
public class Source {
public int frmValue { get; set; }
public int frmValue2 { get; set; }
}
public class Dest {
public int Value { get; set; }
public int Value2 { get; set; }
}
Mapper.Initialize(cfg => {
cfg.RecognizePrefix("frm");
cfg.CreateMap<Source, Dest>();
});
Mapper.AssertConfigurationIsValid();默认情况下,AutoMapper会识别前缀"Get",如果您需要清除前缀:
Mapper.Initialize(cfg => {
cfg.ClearPrefixes();
cfg.RecognizePrefixes("tmp");
});
https://stackoverflow.com/questions/9321487
复制相似问题