AutoMapper - ポリモーフィズムを使ったマッピングを試す
マッピング元はポリモーフィズムもいけるよね?と確認したくてサンプルを書いてみました。
いつものごとくモデルとプロファイルを用意します。
// マッピング元の親クラス public abstract class SampleSrcBase { public int Id { get; set; } public string Value1 { get; set; } } // マッピング元 public class SampleSrc : SampleSrcBase { public string Value2 { get; set; } } // マッピング先 public class SampleDst { public int Id { get; set; } public string Value1 { get; set; } public string Value2 { get; set; } } // マッピングのプロファイル public class SampleProfile : Profile { public SampleProfile() { CreateMap<SampleSrc, SampleDst>(); } }
SampleSrcBase(SampleSrc)からSampleDstにマッピングします。
// 準備 Mapper.Initialize(config => { config.AddProfile<SampleProfile>(); }); Mapper.AssertConfigurationIsValid(); // マッピング元のSampleSrcBaseを作る関数 SampleSrcBase getSrc() => new SampleSrc { Id = 1, Value1 = "x", Value2 = "y", }; // 変数srcはSampleSrcBase型(中身はSampleSrc) var src = getSrc(); // マップ var dst = Mapper.Map<SampleDst>(src); // 確認 // Value2もマッピングされている Console.WriteLine(dst.Id); // 1 Console.WriteLine(dst.Value1); // x Console.WriteLine(dst.Value2); // y
ちゃんとマッピングできると。