Guest User

Untitled

a guest
Oct 17th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. class BaseClass
  2. {
  3. public string PropertyA { get; set; }
  4. }
  5.  
  6. class DerivedClass: BaseClass
  7. {
  8. public string PropertyB { get; set; }
  9. }
  10.  
  11. class ContainerClass
  12. {
  13. public DerivedClass ComplexProperty { get; set; }
  14. public string PropertyC { get; set; }
  15. }
  16.  
  17. class SourceClass
  18. {
  19. public string PropertyA { get; set; }
  20. public string PropertyB { get; set; }
  21. public string PropertyC { get; set; }
  22. }
  23.  
  24. Mapper.CreateMap<SourceClass, ContainerClass>()
  25. .ForMember(d => d.ComplexProperty, o => o.MapFrom(s => Mapper.Map<DerivedClass>(s)))
  26. .AfterMap((s, d) => System.Diagnostics.Debug.WriteLine("SourceClass-> ContainerClass mapped"));
  27.  
  28. Mapper.CreateMap<SourceClass, DerivedClass>()
  29. .AfterMap((s, d) => System.Diagnostics.Debug.WriteLine("SourceClass -> DerivedClass mapped"));
  30.  
  31. Mapper.CreateMap<BaseClass, DerivedClass>()
  32. .AfterMap((s, d) => System.Diagnostics.Debug.WriteLine("BaseClass -> DerivedClass mapped"));
  33.  
  34. var source = new SourceClass {
  35. PropertyA = "ValueA",
  36. PropertyB = "ValueB",
  37. PropertyC = "ValueC",
  38. };
  39.  
  40. var destination = Mapper.Map<ContainerClass>(source);
  41.  
  42. Console.WriteLine("PropertyA: " + destination?.ComplexProperty?.PropertyA);
  43. Console.WriteLine("PropertyB: " + destination?.ComplexProperty?.PropertyB);
  44. Console.WriteLine("PropertyC: " + destination?.PropertyC);
  45.  
  46. PropertyA: ValueA
  47. PropertyB:
  48. PropertyC: ValueC
  49.  
  50. SourceClass -> DerivedClass mapped
  51. BaseClass -> DerivedClass mapped
  52. SourceClass -> ContainerClass mapped
Add Comment
Please, Sign In to add comment