Наконец-то получил automapper для работы: previous question 1, previous question 2.Automapper RecognizePostfix метод не работает с массивом oh postfixes
На данный момент у меня есть что-то вроде этого:
public class Steps
{
public PersonalModel Personal1 { get; set; }
public CompanyModel Company2 { get; set; }
public SposeModel Spose3 { get; set; }
}
public class PersonalModel
{
public int Id { get; set; }
}
public class CompanyModel
{
public string Name { get; set; }
}
public class SposeModel
{
public string Age { get; set; }
}
И:
public class Content
{
public string Dummy1 { get; set; }
public string Dummy2 { get; set; }
public string Dummy3 { get; set; }
public string Dummy4 { get; set; }
public string Dummy5 { get; set; }
public Personal Personal { get; set; }
public Company Company { get; set; }
public Spose Spose { get; set; }
}
public class Personal
{
public int Id { get; set; }
}
public class Company
{
public string Name { get; set; }
}
public class Spose
{
public string Age { get; set; }
}
Эти объекты схематически похожий на моих исходных объектов, за исключением имени и сложности.
И отображение выглядит следующим образом:
public class AutoMapperConfig
{
public static MapperConfiguration MapperConfiguration { get; set; }
public static void Configure()
{
MapperConfiguration = new MapperConfiguration(cfg => {
cfg.AddProfile<Out>();
cfg.CreateMap<Steps, Content>();
});
MapperConfiguration.AssertConfigurationIsValid();
}
}
public class Out: Profile
{
protected override void Configure()
{
CreateMap<PersonalModel, Personal>();
CreateMap<CompanyModel, Company>();
CreateMap<SposeModel, Spose>();
CreateMap<Steps, Content>();
.ForMember(dest => dest.Personal, opt => opt.MapFrom(src => src.Personal1))
.ForMember(dest => dest.Company, opt => opt.MapFrom(src => src.Company2))
.ForMember(dest => dest.Spose, opt => opt.MapFrom(src => src.Spose3))
.ForMember(dest => dest.Dummy1, opt => opt.Ignore())
.ForMember(dest => dest.Dummy2, opt => opt.Ignore())
.ForMember(dest => dest.Dummy3, opt => opt.Ignore())
.ForMember(dest => dest.Dummy4, opt => opt.Ignore())
.ForMember(dest => dest.Dummy5, opt => opt.Ignore());
}
}
Я хочу, чтобы оптимизировать отображение (взял его на другой вопрос, чтобы не сделать еще слишком сложным), как и в AutoMapper Configuration Documentation at GitHub, я увидел, RecognizePostfix
способ. Но когда я ставлю следующую строку в разделе конфигурации:
cfg.RecognizePostfix(new string[3] {"1", "2", "3"});
И удалить следующий из профиля:
.ForMember(dest => dest.Personal, opt => opt.MapFrom(src => src.Personal1))
.ForMember(dest => dest.Company, opt => opt.MapFrom(src => src.Company2))
.ForMember(dest => dest.Spose, opt => opt.MapFrom(src => src.Spose3))
я получаю исключение:
AutoMapper.AutoMapperConfigurationException: неотображённые члены найдено. Просмотрите типы и элементы ниже. Добавить пользовательское выражение отображение , игнорировать, добавить пользовательский распознаватель или изменить тип источника/назначения
Что я здесь делаю неправильно?
Огромное спасибо, человек! Ты спас меня от сумасшествия! Я просто не понимаю, почему у такого отличного продукта такая плохая документация ... – neoselcev
Да, я искал документы, но ничего не нашел об этом –
Еще раз спасибо за помощь! – neoselcev