我一直在寻找一个简单的解决方案来克隆包含其他对象的对象。
public class TPFTestCaseTreeNode: TreeNode, ICloneable
{
public Object Obj;
public TPFTestCaseTreeNode(string Title, Object O)
{
// Set attributes for the TreeNode
Text = Title; // not sure which one we need
Name = Title; // not sure which one we need
// And additionally, remember the test case object
Obj = O;
}
}
对于克隆,我正在使用:
foreach(TreeNode t in listAllTestCases)
{
if(t.Name.Equals(testCaseIdDesc))
{
theNode = (TreeNode)((ICloneable)t).DeepClone();
}
}
listAllTestCases 包含所有类型为“TPFTestCaseTreeNode”的树节点。
循环中的“t”,根据调试器模式确实包含“Obj”的有效值
我也尝试过普通的 Clone() 和 DeepClone(),它们都无法克隆对象“Obj”的状态。它在克隆对象树节点“theNode”中始终保持为空。
谁能提供一个合理的解释,为什么包含另一个对象的对象的克隆在这里失败?这是克隆前和克隆后的两种状态。 初始状态 克隆对象
请注意,我什至也尝试过 binaryformatter(序列化/反序列化机制)。但是,对象“Obj”仍然为空。