मैं एक ही मुद्दे का सामना करना पड़ा जब AutoMapper साथ काम करना, और @ बेहनाम-esmaili है एक अच्छा जवाब लेकिन यह सुधार किया जा सकता है।
आप IMapperConfigurationExpression
के लिए एक विस्तार विधि है जो इस दोतरफा मानचित्रण करना होगा और यह भी दो वैकल्पिक पैरामीटर (Action<IMappingExpression<T, Y>>
) जो जब दोनों प्रकार के मैपिंग कॉन्फ़िगर करने का प्रयास किया जाएगा उम्मीद कर को लागू कर सकते हैं।
public static class ModelMapper
{
private static readonly IMapper _mapper;
static ModelMapper()
{
var mapperConfiguration = new MapperConfiguration(config =>
{
config.CreateTwoWayMap<CustomerViewModel, Customer>(
secondExpression: (exp) => exp.ForMember((source) => source.CustomerEmail, opt => opt.MapFrom(src => src.Email)));
});
_mapper = mapperConfiguration.CreateMapper();
}
public static void CreateTwoWayMap<T, Y>(this IMapperConfigurationExpression config,
Action<IMappingExpression<T, Y>> firstExpression = null,
Action<IMappingExpression<Y, T>> secondExpression = null)
{
var mapT = config.CreateMap<T, Y>();
var mapY = config.CreateMap<Y, T>();
firstExpression?.Invoke(mapT);
secondExpression?.Invoke(mapY);
}
public static T Map<T>(object model)
{
return _mapper.Map<T>(model);
}
}
उपरोक्त कार्यान्वयन इसे प्राप्त करने का एक तरीका है, हालांकि इसे अलग-अलग डिज़ाइन किया जा सकता है।
स्रोत
2017-02-20 16:38:14
ध्यान दें कि अब यह 'रिवर्स मैप' विकल्प के साथ "बॉक्स से बाहर" किया जा सकता है। – Mightymuke