AutoMapper:设置成员名称匹配约定

时间:2010-02-12 20:48:28

标签: c# automapper

我尝试设置成员名称映射约定,以便以“Id”结尾的源成员映射到没有Id的目标成员。例如

UserId - >用户

如何做到这一点?我尝试使用SourceMemberNameTransformer但没有成功。还尝试使用RecognizePostfixes()。

    this.SourceMemberNameTransformer = s =>
                                      {     
                                          return s.Replace("Id", string.Empty);
                                      };

3 个答案:

答案 0 :(得分:1)

您还可以使用“RecognizePostfixes”方法:

this.RecognizePostfixes("Id");

内置变压器就是这个,仅供将来参考:

s => Regex.Replace(s, "(?:^Get)?(.*)", "$1");

答案 1 :(得分:0)

这应该有效:

this.SourceMemberNameTransformer = s =>
          {
              if (s.EndsWith("Id"))
                  return s.Substring(0, s.Length - 2);               
              return s;
          };

您也可以尝试使用DestinationMemberNamingConvention和正则表达式来实现这一目标。

答案 2 :(得分:0)

截至目前,在Profile中进行设置时似乎无效。 SourceMemberNameTransformerRecognizePostfix都不适用于Profile。但是,在Automapper全局配置中指定它可以正常工作。