0

私の現在のコードは少しこのように見えます。

class BaseClass2
{
    public List<BaseClass1> list { get; set; }
}

class DerivedClass2 : BaseClass2
{
    public DerivedClass1A objA { get; set; }
    public DerivedClass1B objB  { get; set; }
}

私が持っているのはDerivedClass2で、基本クラスのリストのタイプを知っており、DerivedClass1AとDerivedClass1Bの2つのタイプがあることを知っています。

上記のように新しい変数を作成することはできますが、メモリを使用せず、元のリストに巧みにアクセスして設定したいのですが、どうすればよいですか?

ありがとう

4

2 に答える 2

1

ジェネリックを使用できます:

class BaseClass2<T>
  T : BaseClass1
{
    public List<T> list { get; set; }
}

class DerivedClass2 : BaseClass2<BaseClass1>
{
    public DerivedClass1A objA { get; set; }
    public DerivedClass1B objB  { get; set; }
}

または、リストからサブクラスを取得したいだけの場合は、次のTypeOf()メソッドを使用できます。

baseClass2Instance.list.TypeOf<DerivedClass1A>();
于 2012-06-06T16:22:08.410 に答える
0

このような意味ですか?

class DerivedClass2 : BaseClass2
{
    public DerivedClass1A objA
    {
        get
        {
            return (DerivedClass1A)base.list[0];
        }
        set
        {
            base.list[0] = value;
        }
    }

    public DerivedClass1B objB
    {
        get
        {
            return (DerivedClass1B)base.list[1];
        }
        set
        {
            base.list[1] = value;
        }
    }
}

それは良いデザインではありません...なぜあなたはそのリストを持っているのですか?あなたは本当に何をしようとしていますか?

于 2012-06-06T16:22:38.130 に答える