类似于TreeView实例与副本实例之间的操作问题

saybookcat 2010-12-31 06:16:40

首先,有了一个实例A ,继承自大致如下的类

public class TreeNode
{
public string Name{get;set;}

public object Tag{get;set;}

private IList<TreeNode> children;

public IList<TreeNode> Children
{
get
{
if (children == null)
children = new List<TreeNode>();
return children;
}
}
}

比如 实例A 有如下的节点关系

A1
B1 B2
C1 C2 C3
(B1 下有 c1 c2 c3三个节点 B2下的空的)

然后 新建实例B ,B=A
然后对实例B进行操作。 如更改节点属性的值等等,现在以Tag属性为例

对B操作完后 ,比如这里 B实例的B2 , C2的Tag 进行了操作, 就需要把B实例操作过的节点Tag里的值给A实例对应的节点的Tag。这里就应该是B.B2.Tag 给 A.B2.Tag

实例A 与实例B 之间的模型结构是一只的,数据层次也关系位置都是一致的。唯一不同的是实例A和实例B里面属性的值
这里就是需要吧实例B中某个节点的Tag属性对应的值 给A 实例 对应的节点的Tag属性。

对于Name的赋值都没有限制 .

请问这问题怎么弄 ?
PS :在不修改其模型结构的前提下


...全文
79 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
saybookcat 2010-12-31
  • 打赏
  • 举报
回复
从源对象A上复制出对象B 的原因是 对B进行操作的时候B的很多属性都对发生改变
而A需要的只有tag 属性 所以只取B的一个属性
wuyq11 2010-12-31
  • 打赏
  • 举报
回复
复制任何一个对象是不可能的
只有实现ICloneable接口的类的对象可以
使用.Clone方法,创建作为当前实例副本的新对象
浅拷贝是指当对象的字段值被拷贝时,字段引用的对象不会被拷贝,这样,当拷贝完毕后,源对象和拷贝对象的字段会引用同一个值。
深拷贝是对对象实例中字段引用的对象也进行拷贝的一种方式
class MyBaseClass {
public static string CompanyName = "A";
public int age;
public string name;
}
class MyDerivedClass: MyBaseClass {
static void Main() {
MyDerivedClass m1 = new MyDerivedClass();
m1.age = 42;
m1.name = "A";
MyDerivedClass m2 = (MyDerivedClass) m1.MemberwiseClone();
}
}

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧