Может ли Automapper сопоставить сложный исходный граф с плоским назначением без префиксов в свойствах назначения и без пользовательских сопоставлений?

Есть ли способ заставить Automapper отображать сложный исходный граф, например:

public class Source {
    public string Name { get; set; }
    public SourceSub Sub { get; set; }
}

public class SourceSub {
    public string ValA { get; set; }
    public string ValB { get; set; }
}

в плоский пункт назначения, который выглядит так:

public class Dest {
    public string Name { get; set; }
    public string ValA { get; set; }
    public string ValB { get; set; }
}

Я знаю, что что-то вроде этого будет работать для пункта назначения:

public class Dest {
    public string Name { get; set; }
    public string SubValA { get; set; }
    public string SubValB { get; set; }
}

Однако я ищу способ сопоставления с местом назначения, не требуя префикса в свойствах назначения (для дочернего класса в источнике), если имена в свойствах дочернего класса источника совпадают с именами свойств назначения. Есть ли способ указать Automapper проецировать свойства в дочернем классе источника на плоский класс назначения без сопоставления каждого отдельного члена?


person Matt Spradley    schedule 15.02.2010    source источник
comment
это простая задача для ValueInjecter, потому что вы можете делать с ним любой алгоритм отображения, который вы можете себе представить valueinjecter.codeplex.com/ документация   -  person Omu    schedule 06.05.2010
comment
Изменилось ли это с годами? Было бы здорово иметь возможность сделать что-то вроде этого: CreateMap‹Source, Dest›().ForSourceMember(s =› s.Sub, o =› o.FromBase‹SourceSub, Dest›())   -  person Nicky Muller    schedule 27.11.2017
comment
Недавно этот вопрос возник снова. Было предложено несколько техник. stackoverflow.com/questions/50964757/   -  person Rob    schedule 21.06.2018


Ответы (1)


Нет, сейчас это не поддерживаемый сценарий. Мы какое-то время смотрели на это, но обнаружили, что частота коллизий имен слишком высока для наших приложений, а уплощенное имя сохранило полный контекст того, откуда взялось это значение.

person Jimmy Bogard    schedule 18.02.2010
comment
@Джимми: Спасибо за ответ. Во-первых, позвольте мне сказать, что мы любим AutoMapper. Спасибо за ваш вклад. Было бы неплохо добавить функцию в V2 для поддержки опции сопоставления префиксов, отличных от имени дочернего класса, в плоский объект. Кроме того, возможно, есть возможность включить / выключить то, что я пытаюсь сделать для отдельных карт. Просто просьба, я знаю, что в вашей очереди много других запросов, и этот может конфликтовать или быть слишком сложным. - person Matt Spradley; 18.02.2010
comment
Я также хотел бы иметь возможность сделать это. - person Jack Ukleja; 25.10.2010