WPF中通過反射實現物件的複製貼上

2021-10-25 01:55:38 字數 1304 閱讀 2236

在wpf專案開發過程中,需要實現乙個功能。在當前介面的工程列表中,實現工程的複製貼上功能。要求能夠完整拷貝被複製的工程的各個引數,並生產乙個跟被拷貝工程沒有任何關聯的新的工程。

工程**結構如下

複製的操作很簡單,此處獲取到完整的工程物件資訊即可,具體的轉殖拷貝過程在貼上的函式中實現。

private

icloneable copyitem;

//複製item

///

/// 複製工程

///

///

///

private

void

project_oncopy

(object sender,

routedeventargs e)

貼上時,先通過反射,獲取project中的物件資訊。在project類通過如下clone()函式實現。如下的clone()函式是最通用的反射寫法。

///--------project類

public

object

clone()

return cloneproject;

}

通過上面的函式雖然能實現對工程資訊的拷貝,但是其中segmentmanage中的具體的segment資訊會丟失,則需要對segmentmanage進行拷貝。而segment是基類,有多個具體的segment類繼承自他。這裡就需要使用泛型。

public

static list

clonelistbyvalue

<

t1>

(list valuelist)

where t1 :

class

, icloneable

return list;

}private

void

cloneallsegments

(totalsegmentmanage cloneelement)

public

object

clone()

在貼上的函式中,呼叫以上方法,顯示拷貝。

private

void

project_onpaste

(object sender,

routedeventargs e)

}

C 通過反射實現兩個物件相同屬性值的複製

類a 1 2 類a 3 4public class typea57 public string name 8 類b1 2 類b 3 4public class typeb57 public string name 8public string age 9 1 using system 2using ...

C 使用反射來實現物件的深度複製方法

實現方式 通過挨個羅列的方式一次複製子物件是非常耗費人力的,如果子物件是引用型別,則還要需要考慮是否對子物件進一步深拷貝。實際應用中,乙個類如果有幾十個子物件,挨個複製對於開發人員來說索然無味比較費時費力。所以使用反射機制來實現。但是如果是服務端執行的話,還是建議手動的實現。畢竟反射機制比直接寫出來...

java中通過IO流實現檔案的複製

一 通過節點流 inputstream outputstream 實現檔案的複製 param pathto 要儲存複製內容的新檔案路徑,包含檔名及其字尾 param pathfrom 要複製的原始檔路徑,包含檔名及其字尾 author beauxie static void copyfile str...