2つの交互のクラスからオブジェクトの階層を作成するにはどうすればよいですか?

c# generics xml
2つの交互のクラスからオブジェクトの階層を作成するにはどうすればよいですか?

これがシナリオです。

共通のクラス(「Pield」)から派生した2つのクラス(「Page」と「Field」)があります。 + XMLファイル内のタグを表し、次の階層にあります。

           ...

        ...

    ...

つまり、ページオブジェクトとフィールドオブジェクトは交互型の階層にあります(階層の各ラングに対して複数のページまたはフィールドがある場合があります)。

すべてのFieldおよびPageオブジェクトには、他のタイプのそれぞれの親オブジェクトを指す親プロパティがあります。 これは、親子メカニズムが2つの下位クラス(ページおよびフィールド)によって共有される基本クラス(Pield)によって制御されない限り、問題ではありません。

「Pield child = new Pield(pchild、this);」という行で失敗する1つの試みを次に示します。

class Pield
{

    private T _pield_parent;

    ...

    private void get_children() {
        ...
                        Pield child = new Pield(pchild, this);
        ...
    }
    ...
}


class Page : Pield {
    ...
}

class Field : Pield
{
     ...
}

これをエレガントに解決する方法についてのアイデアはありますか?

ベスト、

ミリセント

  1  0


ベストアンサー

あなたは継承を必要とせず、むしろ封じ込めを必要とするように思えます。 フィールドは、ページのタイプ*ではなく、*ページ内に含まれています。 何かのようなもの:

class Page
{
    Field Parent {get;set;}
    IEnumerable Children {get;set;}
}
class Field
{
    Page Parent {get;set;}
    IEnumerable Children {get;set;}
}

1


そこで登録することにしましたが、個々の投稿に返信する方法がわからないので、ここに返信を書きます。

最初に、返信をありがとう! そこには、特にあなたからの役立つヒントがいくつかあります。ohadsc。

親クラス(「Pield」)を削除し、それぞれのコードをすべて2つの子クラスに入れることで問題を解決しました。 両方のクラスの背後にある考え方はおおむね似ていましたが、とにかく親クラスの2つのコードは分割されました。

みんな助けてくれてありがとう!

ミリセント

0


タイトルとURLをコピーしました