有一个类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
该如何来实现这个带泛型参数的构造函数呢?
public DataGroupInfo(string DataGroup, string ReferenceId, List<MsgInfo> Msgs)
{
this.datagroup = DataGroup; this.msgs = Msgs; this.referenceid = ReferenceId;
}我想把MsgInfo用占位符T来表示,因为这样可以在实例化DataGroupTable的时候具体指定是MsgInfo还是它的继承类,这样可以比较灵活的生成不同的 DataGroupTable
该如何来实现这个带泛型参数的构造函数呢?
{
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;
}
}
{
this.datagroup = DataGroup; this.msgs = Msgs; this.referenceid = ReferenceId;
}这样写吗?但是编译报错,到处都是红波浪线,好像没有看到构造函数包含泛型参数的,能帮我修改一下吗?谢谢
呵,就是二楼那种做法了。
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;
} }