Допустим, у меня есть эти моделиAutomapper, отображающий объекты посредством связанной ассоциации?
public class Mouse
{
public string Cheese { get; set; }
}
public class Cat
{
public string Hairball { get; set; }
}
public class Dog
{
public string ChewyToy { get; set; }
}
И сопоставить мышь кошке тогда кошка с собакой:
Mapper.CreateMap<Mouse, Cat>().ForMember(m => m.Hairball, o => o.MapFrom(src => src.Cheese));
Mapper.CreateMap<Cat, Dog>().ForMember(m => m.ChewyToy, o => o.MapFrom(src => src.Hairball));
Расширением Мышь также должны быть сопоставлены с собачкой, правильно? Когда я пытаюсь сопоставить между ними:
var mouse = new Mouse() { Cheese = "Eat me" };
Dog dog = Mapper.Map<Mouse, Dog>(mouse);
я получаю исключение:
Попытка сопоставить App_Start.MapConfig + мышь для App_Start.MapConfig + собака. Исключение типа «AutoMapper.AutoMapperMappingException» было выброшено.
Как это сделать без явного создания карты между мышью и собакой? Это простой пример большой проблемы. Я также открыт для переключения фреймворков, таких как Value Injector, Glue и т. Д., Если они поддерживают это поведение.
написать собственный автопилот? этот тип проблемы намного сложнее, чем вы думаете. Подумайте о создании структуры данных графа для отслеживания «транзитивного» отображения. –
Извините, но я увидел «струйный сыр» и подумал «вкусный!». Игнорируйте это. –
Вы не можете, Никаких решений, кроме Mapper.CreateMap (...) –