Я часто использую AutoMapper для сопоставления объектов Model (Domain) с объектами ViewModel, которые затем потребляются моими представлениями, в шаблоне Model/View/View-Model.
Это включает в себя множество операторов Mapper.CreateMap, которые все должны быть выполнены, но должны выполняться только один раз в жизненном цикле приложения.
Технически, тогда я должен хранить их все в статическом методе где-нибудь, который вызывается из моего метода Application_Start() (это приложение ASP.NET MVC).
Однако, кажется, неправильно группировать множество различных проблем отображения вместе в одном центральном месте.
Особенно, когда код сопоставления становится сложным и включает в себя форматирование и другую логику.
Есть ли лучший способ организовать код сопоставления, чтобы он находился близко к ViewModel, который это касается?
(Я придумал одну идею - имея метод CreateMappings на каждом ViewModel и в BaseViewModel, вызывая этот метод при создании экземпляра. Однако, поскольку метод следует вызывать только один раз в жизненном цикле приложения, ему нужно некоторое дополнительную логику для кэширования списка типов ViewModel, для которых был вызван метод CreateMappings, а затем только вызывать его, если необходимо, для ViewModels, которые не входят в этот список.)