關於C#的Clone

在C#要做Class的複製並不單純用" = "就可以解決了
因為這樣只會變成reference同一個記憶空間
可以參考這位大大的範例
https://dotblogs.com.tw/yc421206/archive/2011/06/17/28785.aspx

這篇文章的解法是用C#原生的 MemberwiseClone
在Class裡面預先寫好了Clone的方法再來呼叫

不過公司內神奇的D大提供了更強的解法>///<
在Visual Studio可以抓一個Automapper的插件
安裝的方法我也是沒有很清楚….
大概就是用NuGet尋找Automapper吧

AutoMapper主要的概念是
預先建立一個profile
先規定好ClassA和ClassB兩個類別該如何對應
(AutoMapper不僅同個類別的複製,不同類別也是可以寫邏輯對應)
再呼叫這個method來複製class
輕鬆愉快~

好啦 其實也沒有那麼輕鬆愉快....
因為困難的部分都由公司的PG先把架構寫好了….
所以我才能簡單的呼叫method就好

如果不想要寫一大堆的profile
假設不特地寫profile,Automapper好像也會自動根據類別屬性的名稱
只要ClassA和ClassB有相同的屬性名稱就會自己複製過去

除了class間的複製
AutoMapper還有另一個擴充套件DelegateDcomiler更強
據我所知DelegateDcomiler是用來輔助Linq
加上這個套件,AutoMapper就可以預先將TableA和TableB的Join寫好
有時系統比較複雜
就不需要每次每次都要寫同樣的join
也能讓Linq簡單易懂的多!