有一个类MsgInfo,它有几个继承的子类:PriceMsgInfo,TNAMsgInfo,他们用于另一个类 DataGroupTable 的创建DataGroupTable的构造函数如下:
        public DataGroupInfo(string DataGroup, string ReferenceId, List<MsgInfo> Msgs)
        {
            this.datagroup = DataGroup; this.msgs = Msgs; this.referenceid = ReferenceId;
        }我想把MsgInfo用占位符T来表示,因为这样可以在实例化DataGroupTable的时候具体指定是MsgInfo还是它的继承类,这样可以比较灵活的生成不同的 DataGroupTable 
该如何来实现这个带泛型参数的构造函数呢?

解决方案 »

  1.   

    把所有用于 MsgInfo 的地方换成 T 就可以了啊
      

  2.   

    把这个类做成泛型类:        class DataGroupInfo<T>
            {
                private string datagroup;
                List<T> msgs;
                string referenceid;
                public DataGroupInfo(string DataGroup, string ReferenceId, List<T> Msgs)
                {
                    this.datagroup = DataGroup; this.msgs = Msgs; this.referenceid = ReferenceId;
                } 
            }
      

  3.   

            public DataGroupInfo<T>(string DataGroup, string ReferenceId, List<T> Msgs)
            {
                this.datagroup = DataGroup; this.msgs = Msgs; this.referenceid = ReferenceId;
            }这样写吗?但是编译报错,到处都是红波浪线,好像没有看到构造函数包含泛型参数的,能帮我修改一下吗?谢谢
      

  4.   

    this.msgs 是 MsgInfo 类型吧?也要换成 T
      

  5.   

    是整个类,用到 MsgInfo 的地方都换成 T,然后类名写成 DataGroupInfo<T>
    呵,就是二楼那种做法了。
      

  6.   

    应该还要限制T只能是MsgInfo或者其之类吧。
    DataGroupTable的声明可以这样写:public class DataGroupTable<T> where T:MsgInfo
    {
       //Add your code here
       ......
     
        public DataGroupInfo(string DataGroup, string ReferenceId, List<T> Msgs)
        {
            this.datagroup = DataGroup; 
            this.msgs = Msgs; 
            this.referenceid = ReferenceId;
        } }