[C#] 複製 Model 後異動時會互相引響

有一需求必須複製一個Model,這時如果異動Model_Copy時會造成Model_Source也跟著被更動,爬文後找到了一些方法來測試,問題依然存在…

 

  1. 用等於(=)的方式取值
    • 程式碼
      2016-08-25 22_03_12-ConsoleApplication1 - Microsoft Visual Studio
    • 結果:
      2016-08-25 22_03_39-file____C__Users_Minsheng_Desktop_ConsoleApplication1_ConsoleApplication1_bin_De
  2. 用new建立新的物件的方式取值
    • 程式碼
      2016-08-25 22_06_46-ConsoleApplication1 [執行] - Microsoft Visual Studio
    • 結果
      2016-08-25 22_03_39-file____C__Users_Minsheng_Desktop_ConsoleApplication1_ConsoleApplication1_bin_De
  3. 利用LINQ的方式取值
    • 程式碼
      2016-08-25 22_08_09-ConsoleApplication1 [執行] - Microsoft Visual Studio
    • 結果
      2016-08-25 22_03_39-file____C__Users_Minsheng_Desktop_ConsoleApplication1_ConsoleApplication1_bin_De

 

最後終於找到了一個方法可以用,那就是讓Model繼承ICloneable並使用Object中的MemberwiseClone()來實作Clone(),就可以順利Copy啦!

  • 程式碼
    1. Model
      2016-08-25 22_11_30-ConsoleApplication1 [執行] - Microsoft Visual Studio
    2. 利用LINQ來呼叫Clone()方法
      2016-08-25 22_46_21-ConsoleApplication1 - Microsoft Visual Studio
  • 結果
    2016-08-25 22_15_03-file____C__Users_Minsheng_Desktop_ConsoleApplication1_ConsoleApplication1_bin_De