因為工作因素發生了需要將兩個具有相同資料的Model進行轉換,但是如果手動轉換的話太累了,工程師就是懶嘛~
於是乎就拜了Google大神找到了一個名叫AutoMapper
套件。
- 從NuGet下載AutoMapper
- 新增兩組相同的Model
1234567891011121314151617class Model_1{public string Name { get; set; }public int Year { get; set; }public DateTime Date { get; set; }}class Model_2{public string Name { get; set; }public int Year { get; set; }public DateTime Date { get; set; }} - 轉換用的方法
123456789101112static TModel_2 ConvertModelToModel<TModel_1, TModel_2>(TModel_1 list){Mapper.Initialize(cfg =>{cfg.CreateMissingTypeMaps = true;cfg.CreateMap<TModel_1, TModel_2>().ReverseMap();});Mapper.Configuration.AssertConfigurationIsValid();var converted = Mapper.Map<TModel_2>(list);return converted;} - 轉換
1234567891011121314151617181920212223static void Main(string[] args){Model_1 model1 = new Model_1();Model_2 model2 = new Model_2();model1.Name = "王小明";model1.Year = 2016;model1.Date = DateTime.UtcNow.AddHours(8);Console.WriteLine("=== 轉換前 ===");Console.WriteLine("model1=name:{0}, year:{1}, date:{2}, type:{3}", model1.Name, model1.Year, model1.Date, model1.GetType());Console.WriteLine("model2=name:{0}, year:{1}, date:{2}, type:{3}", model2.Name, model2.Year, model2.Date, model2.GetType());model2 = ConvertModelToModel<Model_1, Model_2>(model1);Console.WriteLine("=== 轉換後 ===");Console.WriteLine("model1=name:{0}, year:{1}, date:{2}, type:{3}", model1.Name, model1.Year, model1.Date, model1.GetType());Console.WriteLine("model2=name:{0}, year:{1}, date:{2}, type:{3}", model2.Name, model2.Year, model2.Date, model2.GetType());Console.ReadLine();} - 結果
原始碼:https://github.com/shuangrain/ConsoleApplication_AutoMapper