代码之家  ›  专栏  ›  技术社区  ›  epitka

自动映射:设置成员名称匹配约定

  •  1
  • epitka  · 技术社区  · 15 年前

    用户ID->用户

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

        this.SourceMemberNameTransformer = s =>
                                          {     
                                              return s.Replace("Id", string.Empty);
                                          };
    
    3 回复  |  直到 15 年前
        1
  •  1
  •   Jimmy Bogard    15 年前

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

    this.RecognizePostfixes("Id");
    

    内置变压器如下,仅供将来参考:

    s => Regex.Replace(s, "(?:^Get)?(.*)", "$1");
    
        2
  •  0
  •   SteveC    12 年前

    到目前为止,这似乎不工作时,设置在 Profile . 也不 SourceMemberNameTransformer RecognizePostfix 在…工作 轮廓 . 但是,如果在Automapper全局配置中指定了它,则可以正常工作。

        3
  •  0
  •   Mrchief    11 年前

    这应该起作用:

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

    你也可以试着用 DestinationMemberNamingConvention 还有正则表达式。