Program.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. //using System.Threading.Tasks;
  6. //using static ConsoleGeneric.IGenericInterface<T>;
  7. namespace ConsoleGeneric
  8. {
  9. //创建一个泛型接口
  10. public interface IGenericInterface<T>
  11. {
  12. T CreateInstance(); //接口中调用CreateInstance方法
  13. //实现上面泛型接口的泛型类
  14. //派生约束where T : TI(T要继承自TI)
  15. //构造函数约束where T : new()(T可以实例化)
  16. public class Factory<T, TI> : IGenericInterface<TI> where T : TI, new()
  17. {
  18. public TI CreateInstance() //创建一个公共方法CreateInstance
  19. {
  20. return new T();
  21. }
  22. }
  23. }
  24. internal class Program
  25. {
  26. static void Main(string[] args)
  27. { //实例化接口
  28. IGenericInterface<System.ComponentModel.IListSource> factory = new Factory<System.Data.DataTable, System.ComponentModel.IListSource>();
  29. //输出指定泛型的类型
  30. Console.WriteLine(factory.CreateInstance().GetType().ToString());
  31. Console.ReadLine();
  32. }
  33. }
  34. }