2017-02-28 14 views
1

Automapperマッピングネストされたオブジェクト

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; 
} 

は、上記の階層の戻り値の型は、私は従業員の姓と名がマップされますEmployeeViewModelに従業員クラスをマッピングしたい

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

だろうemployeeViewModel FullNameプロパティ。私は今、私はEmployeeViewModelのマッピングを持っているオリジナルクラスAのオブジェクトをバック返すにはどうすればよいコード

public class EmployeeViewModel 
{ 
    public FullName; 
} 


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

の作品に従うことによって、これを達成することができます。このようなもの ??

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

答えて

1

は、ドキュメントを読む時間の良い量を過ごした後、私はここで解決策を見つけた私のアプローチは

であるa)は、この

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のようなクラスのソース&先のクラスを作成します)マッピング

を作成します。
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>(); 
}); 

//これは、マッピングが正しいことを確認するためですトンあなたが期待異議がautomapperによって作成された場合、あなたはこのオブジェクトを探る場合は、この

のようなオブジェクトカルコゲノフルバレン骨格を見つけます//

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); 

をマッピングした後、次のコードを追加しテストすることができ

config.AssertConfigurationIsValid(); 

//

"ClassA":{ 
    "classB":{ 
     "ListOfData":{ 
      "EmployeeViewModel":{ 
       "FullName":"David Peter" 
      } 
     } 
    } 
} 
関連する問題