2017-02-28 9 views
1

Ich habe folgende Klassen StrukturAutoMapper Mapping verschachtelte Objekte

public class ClassA 
{ 
    public ClassB objB; 
} 

Public class ClassB 
{ 
    public ListOfData objListofData; 
} 

public class ListOfData 
{ 
    public Employee objEmp; 
} 

public class Employee 
{ 
    public string FirstName; 
    public string LastName; 
} 

Rückgabetyp der obigen Hierarchie würde

"ClassA":{ 
    "classB":{ 
     "ListOfData":{ 
      "employee":{ 
       "FirstName":"David", 
       "LastName" :"Peter" 
      } 
     } 
    } 
} 

Ich möchte sein Mitarbeiter-Klasse EmployeeViewModel kartieren, wo Mitarbeiter Vorname und Nachname wird abgebildet werden MitarbeiterViewModel FullName-Eigenschaft. Ich kann dies durch

public class EmployeeViewModel 
{ 
    public FullName; 
} 


CreateMap<Employee,EmployeeViewModel>() 
         .ForMember(dest => dest.FullName, 
            opts => opts.MapFrom(
             src => string.Format("{0} {1}", 
             src.FirstName, src.LastName))); 

nun folgende Stück Code erreichen Wie kann ich Ursprüngliche classA Objekt wieder zurück, die Abbildung von EmployeeViewModel hat. Etwas wie das ??

"ClassA":{ 
    "classB":{ 
     "ListOfData":{ 
      "EmployeeViewModel":{ 
       "FullName":"David Peter" 
      } 
     } 
    } 
} 

Antwort

1

Nachdem er gute Zeit zu lesen Dokumentation fand ich Lösung hier mein Ansatz ist

a) Erstellen Klasse Quelle & Zielklassen wie diese

public class ClassA 
{ 
    public ClassB objB; 
} 

Public class ClassB 
{ 
    public ListOfData objListofData; 
} 

public class ListOfData 
{ 
    public Employee objEmp; 
} 

public class Employee 
{ 
    public string FirstName; 
    public string LastName; 
} 
------------------------------------ 
public class DestClassA 
{ 
    public DestClassB objB; 
} 

Public class DestClassB 
{ 
    public DestListOfData objListofData; 
} 

public class DestListOfData 
{ 
    public DestEmployee objEmp; 
} 

public class EmployeeViewModel 
{ 
    public string FullName; 
} 

b) Erstellen Mapping

var config = new MapperConfiguration(cfg => { 

    cfg.CreateMap<Employee, EmployeeViewModel>(). 
       ForMember(dest => dest.FullName, opts => opts.MapFrom(
        src => string.Format("{0} - {1}", 
        src.FirstName, src.LastName))); 
    cfg.CreateMap<ListOfData, DestListOfData>(); 
    cfg.CreateMap<GetFundFamilyOutOfBalanceTotalsResponse, GetFundFamilyOutOfBalanceTotalsResponseMapped>(); 
    cfg.CreateMap<ClassB, DestClassB>(); 
    cfg.CreateMap<ClassA, DestClassA>(); 
}); 

// Dies stellt sicher, dass Ihre Zuordnung korrekt ist t

config.AssertConfigurationIsValid(); 

// Sie können, wenn der Test erwartet widersprochen wird von AutoMapper erstellt, folgenden Code nach Mapping

var mapper = config.CreateMapper(); 
var output = new ClassA 
{ 
    objClassB = new ClassB 
    { 
     objListofData = new ListOfData 
     { 
      Employee = new [] 
       { 
        new Employee { FirstName = "David", LastName ="Peter" } 
       } 
     } 
    } 
}; 

var destMap = mapper.Map<DestClassA>(output); 

hinzufügen // Wenn Sie dieses Objekt erkunden Sie Objekt struture wie diese

finden
"ClassA":{ 
    "classB":{ 
     "ListOfData":{ 
      "EmployeeViewModel":{ 
       "FullName":"David Peter" 
      } 
     } 
    } 
}