以下是该方案:
我有两个类(“Page”和“Field”),它们来自一个公共类(“Pield”)。
它们表示XML文件中的标记,并且位于以下层次结构中:
<page>
<field>
<page>
...
</page>
...
</field>
...
</page>
I.e。:Page和Field对象采用交替类型的层次结构(层次结构的每个梯级可能有多个Page或Field)。
每个Field和Page对象都有一个父属性,它指向另一个类型的相应父对象。除非父子机制由基类(Pield)控制,否则这不是问题,基类由两个下属类(Page和Field)共享。
这是一次尝试,在“Pield child = new Pield(pchild,this);”行中失败了:“
class Pield<T>
{
private T _pield_parent;
...
private void get_children() {
...
Pield<Page> child = new Pield<Page>(pchild, this);
...
}
...
}
class Page : Pield<Field> {
...
}
class Field : Pield<Page>
{
...
}
关于如何优雅地解决这个问题的任何想法?
最佳,
米里森
答案 0 :(得分:1)
听起来像你不需要继承,而是需要遏制。字段不是一种页面,包含在页面中。类似的东西:
class Page
{
Field Parent {get;set;}
IEnumerable<Field> Children {get;set;}
}
class Field
{
Page Parent {get;set;}
IEnumerable<Field> Children {get;set;}
}
答案 1 :(得分:0)
所以我决定注册,但我不知道如何回复个别帖子,所以我只会在这里写回复。
首先,感谢回复!那里有一些有用的提示,特别是来自你,ohadsc。
我通过删除父类(“Pield”)并将所有相应的代码放入两个子类中来解决了这个问题。尽管两个类背后的想法大致相似,但无论如何,代码在父类中的两个之间分开。
感谢大家的帮助!
米里森