1

私は次のようなことをしました。

var list; //-> i want to declare this list once time
if (gvd.ID.Equals("gvAccountSetup"))
{
    ClsAccountHead AccountHead = new ClsAccountHead();
    AccountHead.CampusId = cmbAccCampus.SelectedValue.ToInt32();
    // here i want to intialize the same list with other type
    list = new List<ClsAccountHead>();
    list = AccountHead.AccountHeadListByCampusId(PageIndex + 1, PageSize);
}
else if (gvd.ID.Equals("gv_AccSubHead"))
{
    ClsAccountSubHead AccountSubHead = new ClsAccountSubHead();
    AccountSubHead.HeadId = cmbSrchAccHead.SelectedValue.ToInt32();
  // here i want to intialize the same list with another type
    list = new List<ClsAccountSubHead>();
    list = AccountSubHead.SubHeadGetListByHeadIdWithPaging(PageIndex, PageSize);
}

だから、私の質問は、一度宣言されたリスト(ジェネリック)をどのように記述すれば、それで複数の型を渡すことができるかです。

4

2 に答える 2

2

「タグ」インターフェイスを作成し、それを実装するすべてのクラスを作成するだけです。

internal interface TagInterface { } // rename it as appreciated

public class MyList<T> : List<T> where T : TagInterface { }

var list = new MyList<ClsAccountHead>();

または非常に簡単に:

var list = new List<TagInterface>();
于 2013-03-29T05:56:51.043 に答える
1

アイテムの基本クラスまたはインターフェイスを として使用するだけListですT

var list = new List<BaseAccountHead>();

そして、あなたの型がこの型を拡張していることを確認してください:

class BaseAccountHead { }
class ClsAccountHead : BaseAccountHead { }
class ClsAccountSubHead : BaseAccountHead { }
于 2013-03-29T06:02:16.720 に答える