首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带前缀的AutoMapper

带前缀的AutoMapper
EN

Stack Overflow用户
提问于 2012-02-17 08:58:15
回答 2查看 5.6K关注 0票数 18

我正在尝试使用自动映射程序来映射到对象,问题是我试图映射的对象之一在其所有属性的前面有一个前缀'Cust_‘,而另一个没有。有没有方法进行这种映射。

例如,假设我有

代码语言:javascript
复制
class A
{
      String FirstName { get; set; }
      String LastName { get; set; }
}

class B
{
      String Cust_FirstName { get; set; }
      String Cust_LastName { get; set; }
}

显然,这张地图不能工作

代码语言:javascript
复制
AutoMapper.Mapper.CreateMap<A, B>();
b = AutoMapper.Mapper.Map<A, B>(a);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-17 09:07:57

代码语言:javascript
复制
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"

或者:

代码语言:javascript
复制
Mapper.Configuration.RecognizeDestinationPrefixes("Cust_");
Mapper.CreateMap<A, B>();
...
B b = Mapper.Map<A, B>(a);
...
票数 27
EN

Stack Overflow用户

发布于 2016-11-22 22:33:30

文档中有一篇关于Recognizing pre/postfixes的文章

有时,您的源/目标属性将具有共同的前缀/后缀,这会导致您必须执行一系列自定义成员映射,因为名称不匹配。要解决此问题,您可以识别前缀/后缀:

代码语言:javascript
复制
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",如果您需要清除前缀:

代码语言:javascript
复制
Mapper.Initialize(cfg => {
    cfg.ClearPrefixes();
    cfg.RecognizePrefixes("tmp");
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9321487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档