ValueInjecter Map使用說明
繼上一篇寫InjectFrom的用法後,今天要介紹Map的用法,
其實兩個是很像的東西,不過Map可以更方便做客製化功能。
先來看一般的寫法
var customer = new Customer()
{
Id = 1,
FirstName = "Lin",
LastName = "Miles",
Tel = "0978123456",
ZipCode = "476",
Address = "台北市信義區"
};
// 方法一
CustomerInput customerInput = Mapper.Map<Customer, CustomerInput>(customer);
// 方法二,結果會與方法一相同
// CustomerInput customerInput = Mapper.Map<CustomerInput>(customer);
// 結果
Console.WriteLine(customerInput.FirstName);
這個結果也是跟InjectFrom一模一樣,只要是一樣type,一樣name的property,都會複製過去,
不過Map的好處,可以有客製的功能,
當我CustomerInput,有些值要跟Customer不一樣,或者是有Customer沒包含的值需要填入,
此時我們可以使用AddMap來部分客製化
var customer = new Customer()
{
Id = 1,
FirstName = "Lin",
LastName = "Miles",
Tel = "0978123456",
ZipCode = "476",
Address = "台北市信義區"
};
Mapper.AddMap<Customer, CustomerInput>(src =>
{
var res = new CustomerInput();
res.InjectFrom(src);
res.Tel = "02-23851234";
return res;
});
CustomerInput customerInput = Mapper.Map<Customer, CustomerInput>(customer);
Console.WriteLine(customerInput.FirstName);
Console.WriteLine(customerInput.Tel);
上面程式碼,讀者可以看到我加入了AddMap,我設定讓Tel的值,變得不一樣
所以當我Mapper.Map的時候,Tel 就會變成 "02-23851234"。
有此客製化功能還蠻方便的,因為畢竟並不是每一個不同model都能完整複製。
參考資料:https://github.com/omuleanu/ValueInjecter
一天一分享,身體好健康。
該追究的不是過去的原因,而是現在的目的。