在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...