Проблема с AutoMapper - PullRequest
       24

Проблема с AutoMapper

4 голосов
/ 09 апреля 2009

Попытка автоматизировать некоторые объекты.
Исходные объекты имеют свойства с _ перед именем, целевые объекты - не имеют. Можно ли реализовать создание ОДНОЙ карты, чтобы autopper отображал все _properties на свойства
для всех типов источников.

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 ]

8 голосов
/ 02 августа 2009

Что-то, что я недавно добавил в AutoMapper, может вам помочь - пользовательские соглашения об именах. Если вы проверяете транк (R107), ищите INamingConvention. Прямо сейчас у меня есть два соглашения об именах (PascalCase и lower_case_underscore), но на самом деле это просто вопрос выбора правильного RegEx, который поможет вам в этом:

INamingConvention.cs

В настоящее время соглашения об именах являются глобальными и имеют профиль. Поскольку эта функция является новой, нет документации, кроме тестов.

1 голос
/ 17 апреля 2017

Вот как я это делаю

Mapper.Initialize(cfg =>
        {
            cfg.RecognizeDestinationPrefixes(new []{"_"});
            cfg.RecognizePrefixes(new[] { "_" });

            cfg.CreateMap<To, From>().ReverseMap();
        });
0 голосов
/ 27 апреля 2009

Для этого вы можете добавить собственное отображение для решения этого конкретного случая:

Mapper.CreateMap<From, To>()
   .ForMember( dest => dest.Id, opt => opt.MapFrom( src => src._Id ) )
   .ForMember( dest => dest.Name, opt => opt.MapFrom( src => src._Name ) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...