Я пытаюсь использовать automapper для преобразования данных Контракты на объекты клиента и наоборот. Чтобы уменьшить строки кода и упростить его, я хочу динамически создавать сопоставление. Допустим, я звоню в 5 разных сервисов, и каждая служба будет возвращать тот же объект, что и Employee, но данные будут разными (если мне нужна информация о сотрудниках от Microsoft, я позвоню в службу поддержки Microsoft или, если я хочу, чтобы данные о сотрудниках IBM я буду называть службой IBM, на).Общее сопоставление в Automapper
Мой объект что-то вроде ниже ..
Использование Automapper я могу написать что-то ниже ..
Mapper.CreateMap<Service1. PersonDetails, PersonDetails >();
Mapper.CreateMap<Service1.Employee, Employee>()
.ForMember(DEST=>DEST. PersonDetails,M=>M.MapFrom(Q=>Q. PersonDetails));
Mapper.CreateMap<Service2. PersonDetails, PersonDetails >();
Mapper.CreateMap<Service2.Employee, Employee>()
.ForMember(DEST=>DEST.PersonDetails,M=>M.MapFrom(Q=>Q. PersonDetails));
Бути должен написать же самую Сходная логика 5 раз, так как я звоню 5 различные услуги.
Есть ли способ, что я могу сделать это динамически означает, что я хочу сказать Automapper об источнике во время выполнения ..
Пожалуйста посоветуйте !!!
Являются ли сервисы одинаковыми (а не просто похожими)? Если это так, вы должны иметь возможность использовать одни и те же классы DataContract для всех из них. С другой стороны, если они только похожи друг на друга, я не вижу, как Automapper поможет вам автоматически разрешить различия. –
@ Услуги JeroenMostert разные, поэтому каждый datacontract будет поступать из разных пространств имен. Я думаю, что динамический automapper может решить проблему, но не уверен, насколько это точно. – Vicky
Что я имею в виду - это услуги * структурно * разные (что есть, являются ли их запросы совершенно разными) или они одинаковы, за исключением адресов их конечных точек и автогенерированных пространств имен? Потому что в вашем примере выше нет явных различий. –