当前实例如何获取父实例的属性
比如
C# code
class a {
public int Data { get; set; }
public string Name { get{如何在这里获取父实例的Name属性????} }
}
class b{
public List<a> DataList { get; set; }
public string Name { get; set; }
}
谢谢!
------解决方案--------------------
你这不是继承关系
所以
你要么在a里放委托,b里实现这个委托。当然这个解耦合性比较高
要么就是另外的解耦。b里不直接使用List,而是使用ObservableCollection<T> 私有set方法
同时 CollectionChanged事件,直接接管集合的添加,修改过程。把name直接赋值给item
其实你看看微软怎么办的。实际上这东西在设计模式里面要组合模式
而微软本身也大量使用这个模式。control类就是典型。而每个contorl都有一个parent属性,而Contorl.Contorls 则是一个继承与 CollectionBase类的集合对象(为啥要继承这个,因为和你的要求一样,微软需要去接管列表添加修改过程,动态给每个item的parent属性赋值)
------解决方案--------------------
它们不是继承关系,不能用父子来形容,要获得就在 a 中保存包含它的 b 的实例的引用,比如通过构造函数的方式
C# code
class a
{
public a(b _b)
{
this.owner = _b;
}
private b owner;
public int Data { get; set; }
public string Name { get { return this.owner.Name; } }
}
class b
{
public List<a> DataList { get; set; }
public string Name { get; set; }
}