代码之家  ›  专栏  ›  技术社区  ›  Arnis Lapsa

汽车制造商问题

  •  4
  • Arnis Lapsa  · 技术社区  · 16 年前

    正在尝试自动映射某些对象。
    源对象的属性在名称之前有uu,目标对象-没有。 是否可以实现一个映射创建,即automapper将所有_属性映射到属性

    class MyMapper<TFrom, TTo>{
        TTo PerformMap(TFrom fromObject){
            Mapper.CreateMap<From, To>(); // ???
            TTo result = Mapper.Map<From, To>(fromObject);
            //result.Id.ShouldBe(value from TFrom._Id);
            return result;
        }
    }
    
    class From
    {
        public int _Id { get; set; }
        public string _Name { get; set; }
    }
    
    class To
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    
    3 回复  |  直到 16 年前
        1
  •  9
  •   Jim W Jimmy Bogard    12 年前

    我最近在AutoMapper中添加的一些东西可能会对您有所帮助—自定义命名约定。如果你检查了后备箱(R107),看看周围是否有不正常的情况。现在,我有两个命名约定(PascalCase和lower_case_underline),但实际上只是找出正确的正则表达式来让您继续:

    INamingConvention.cs

    现在,命名约定是全局性的,并且在概要文件范围内。因为这个特性是新的,所以除了测试之外没有其他文档。

        2
  •  2
  •   Halter    8 年前

    我就是这样做的

    Mapper.Initialize(cfg =>
            {
                cfg.RecognizeDestinationPrefixes(new []{"_"});
                cfg.RecognizePrefixes(new[] { "_" });
    
                cfg.CreateMap<To, From>().ReverseMap();
            });
    
        3
  •  0
  •   MotoWilliams    16 年前

    为此,您可以添加自定义映射以解决此特定情况:

    Mapper.CreateMap<From, To>()
       .ForMember( dest => dest.Id, opt => opt.MapFrom( src => src._Id ) )
       .ForMember( dest => dest.Name, opt => opt.MapFrom( src => src._Name ) );
    
    推荐文章