私はAutomapperフレームワークの初心者です。次のようなドメインクラスとDTOクラスがあります。
public class Employee
{
public long Id {get;set;}
public string Name {get;set;}
public string Phone {get;set;}
public string Fax {get;set;}
public DateTime DateOfBirth {get;set;}
}
public class EmployeeDto
{
public long Id {get;set;}
public string FullName {get;set;}
public DateTime DateOfBirth {get;set;}
}
注:Employee
クラスのプロパティ "Name"の名前は、EmployeeDto
クラスのプロパティ "FullName"とは異なります。
そして、これはEmployee
オブジェクトをEmployeeDto
にマップするコードです:
Mapper.CreateMap<Employee, EmployeeDto>(); // code line (***)
EmployeeDto dto = Mapper.Map<Employee, EmployeeDto>(employee);
私の質問は:Employee
(ソースクラス)をEmployeeDto
(宛先クラス)にマッピングする場合、マッピングルールを指定するにはどうすればよいですか?言い換えれば、上記のコード行(***)でもっと多くのことを行う必要がありますか?
気にしないで、私自身が解決策を見つけました:
Mapper.CreateMap<Employee, EmployeeDto>()
.ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name));
本当に古いスレッドですが、上記のコメントをAutomapper 8.1以降を使用して更新されたアプローチにまとめるだけです...
var mapConfig = new MapperConfiguration(
cfg => cfg.CreateMap<Employee, EmployeeDto>()
.ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name))
);
次に、mapConfigを使用してマッパーを構築します。
var mapper = mapConfig.CreateMapper();