如何从两个交替的类中创建对象的层次结构?

时间:2010-12-25 12:47:27

标签: c# xml generics

以下是该方案:

我有两个类(“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>
{
     ...
}

关于如何优雅地解决这个问题的任何想法?

最佳,

米里森

2 个答案:

答案 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”)并将所有相应的代码放入两个子类中来解决了这个问题。尽管两个类背后的想法大致相似,但无论如何,代码在父类中的两个之间分开。

感谢大家的帮助!

米里森