using System;
using System.Collections.Generic;
using System.Text;
namespace 泛型
{
class Program
{
static void Main(string[] args)
{
//实例化接口
IGenericl<System.ComponentModel.IListSource> factory =
new Factory<System.Data.DataTable, System.ComponentModel.IListSource>();
//输出指定泛型的类型
Console.WriteLine(factory.CreateInstance().GetType().ToString());
Console.ReadLine();
}
}
public interface IGenericl<T>
{
T CreateInstance();//接口中调用CteateInstance方法
}
//实现上面泛型接口的泛型类
//派生约束where T : TI(T要继承自TI)
//构造函数约束where T : new() (T 可以实例化)
public class Factory<T, TI> : IGenericl<TI> where T : TI,new()
{
public TI CreateInstance()//创建一个公共方法CreateInstance
{
return new T();
}
}
}