अपडेट: यहां पोस्ट किया गया दृष्टिकोण और अधिक मान्य नहीं हैSelfProfiler
है, क्योंकि AutoMapper v2 के रूप में हटा दिया गया है।
मैं थोई के समान दृष्टिकोण लेगा। लेकिन मैं SelfProfiler<>
नक्शे को संभालने के लिए अंतर्निहित कक्षा का उपयोग करूंगा , फिर Mapper.SelfConfigure
फ़ंक्शन को इनिशियलाइज़ करने के लिए उपयोग करूंगा ।
स्रोत के रूप में इस वस्तु का उपयोग करना:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public string GetFullName()
{
return string.Format("{0} {1}", FirstName, LastName);
}
}
और ये गंतव्य के रूप में:
public class UserViewModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class UserWithAgeViewModel
{
public int Id { get; set; }
public string FullName { get; set; }
public int Age { get; set; }
}
आप ये प्रोफाइल बना सकते हैं:
public class UserViewModelProfile : SelfProfiler<User,UserViewModel>
{
protected override void DescribeConfiguration(IMappingExpression<User, UserViewModel> map)
{
//This maps by convention, so no configuration needed
}
}
public class UserWithAgeViewModelProfile : SelfProfiler<User, UserWithAgeViewModel>
{
protected override void DescribeConfiguration(IMappingExpression<User, UserWithAgeViewModel> map)
{
//This map needs a little configuration
map.ForMember(d => d.Age, o => o.MapFrom(s => DateTime.Now.Year - s.BirthDate.Year));
}
}
अपने आवेदन में आरंभ करने के लिए, यह वर्ग बनाएं
public class AutoMapperConfiguration
{
public static void Initialize()
{
Mapper.Initialize(x=>
{
x.SelfConfigure(typeof (UserViewModel).Assembly);
// add assemblies as necessary
});
}
}
इस लाइन को अपने global.asax.cs फ़ाइल में जोड़ें: AutoMapperConfiguration.Initialize()
अब आप अपनी मैपिंग क्लासेस लगा सकते हैं, जहाँ वे आपसे कोई मतलब नहीं रखते हैं और एक मोनोलिथिक मैपिंग क्लास की चिंता नहीं करते हैं।