Используя Профили в Автокартопостроителе для отображения тех же типов с другой логикой

Я использую AutoMapper в своем веб-сайте MVC ASP.NET для отображения моих объектов базы данных на объекты ViewModel, и я пытаюсь использовать несколько профилей для отображения тех же типов, но использую другую логику. У меня была идея сделать так путем чтения сообщения в блоге Matt, где он говорит:

Действительно ключевая роль является профилем конфигурации AutoMapper. Можно сгруппировать конфигурации с профилями. Возможно, в одном профиле Вы форматируете даты одним способом, другим профилем Вы форматируете даты в другом отношении. Я просто использую один профиль здесь.

Таким образом, я создал профиль для одного случая:

public class MyProfile : Profile
{
    protected override string ProfileName
    {
        get
        {
            return "MyProfile";
        }
    }

    protected override void Configure()
    {
        CreateMap().ConvertUsing();
    }
}

public class StringFromDateTimeTypeConverter : ITypeConverter
{
    public string Convert(DateTime source)
    {
        return source.ToString("dd/mm/yyyy", CultureInfo.InvariantCulture);
    }
}

И другой для другого случая:

public class MyProfile2 : Profile
{
    protected override string ProfileName
    {
        get
        {
            return "MyProfile2";
        }
    }

    protected override void Configure()
    {
        CreateMap().ConvertUsing();
    }
}

public class AnotherStringFromDateTimeTypeConverter : ITypeConverter
{
    public string Convert(DateTime source)
    {
        return source.ToString("mm - yyyy", CultureInfo.InvariantCulture);
    }
}

Однако я не могу найти перегрузку Mapper.Map<>() метод для определения профиля. Я также взглянул на Configuration объект без удачи.
Последний зарегистрированный профиль всегда имеет приоритет.

Существует ли способ использовать профили с этой целью?

37
задан wonea 7 December 2016 в 10:37
поделиться

1 ответ

Профили предназначены для разделения общей конфигурации, применяемой для нескольких карт типов, например форматирования. Однако карты типов по-прежнему глобальны. Лучше создать отдельные объекты Configuration и создать для каждого отдельный MappingEngine. Класс Mapper - это просто статический фасад над каждым из них с некоторым управлением жизненным циклом.

42
ответ дан 27 November 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: