今天突然看视频,涉及到泛型类;做了下使用总结:
<1>泛型类定义:
Class A{}
ClassAWhere T://参数约束,Where表示对类变量的约束。
变异的有以下几种:
where T: struct // T必须是一个结构类型
//类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。
where T: class // T必须是一个类(class)类型,不是结构(structure)类型
//类型参数必须是引用类型,包括任何类、接口、委托或数组类型。
where T: new() // T必须要有一个无参构造函数
//类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必须最后指定。
where T: NameOfBaseClass // T必须继承名为基类名称
//类型参数必须是指定的基类或派生自指定的基类。
where T: NameOfInterface // T必须实现名为NameOfInterface的接口
//类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的
Where T:U //为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。这称为裸类型约束.
<2>泛型方法 Void B <T> ()
ex:Public Void Method<T>(T t) Where X:Ibase(); //在泛型中定义
<3>泛型委托 public delegate void CommandDelegate(T t); //在泛型类中定义
还包括 Action Fun的委托使用
<4>在属性中的应用
//利用反射给泛型实例化和给泛型属性赋值
System.Type t = typeof(T);
Assembly ass=Assembly.GetAssembly(t);//获取泛型的程序集
PropertyInfo[] pInfo = t.GetProperties();//获取到泛型所有属性的集合
PropertyInfo pi;
if(pInfo[0].PropertyType.Equals(typeof(string)))
{
string s1=pInfo.Name;
pi.SetValue();//给泛型的属性赋值
}
//以上一次小总结