1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace GenericTest  
  6. {  
  7.     /// <summary>  
  8.     /// 泛型接口的基本学习  
  9.     /// </summary>  
  10.     class GenericInterfaceTest  
  11.     {  
  12.     }  
  13.     /// <summary>  
  14.     /// 泛型接口  
  15.     /// </summary>  
  16.     /// <typeparam name="T"></typeparam>  
  17.     interface IGenericInterface<T> where T : struct    //使用 where T:struct 用来约束 T 类型必须是结构类型。  
  18.     {  
  19.         void Print(T t);  //默认是public 访问修饰符  
  20.     }  
  21.  
  22.     class AClass : IGenericInterface<int>  
  23.     {  
  24.         public void Print(int i)  
  25.         {  
  26.  
  27.         }  
  28.     }  
  29.  
  30.     class BClass : IGenericInterface<int>  
  31.     {  
  32.         public void Print(int i)  
  33.         {  
  34.  
  35.         }  
  36.     }  
  37.  
  38.  
  39.     //--------------------------------------------------------  
  40.     //第一步,当然是把基类先定义好啦。  
  41.     class Human  
  42.     {  
  43.         public string name;  
  44.         public int age;  
  45.     }  
  46.  
  47.     class Chinese : Human  
  48.     {  
  49.  
  50.     }  
  51.  
  52.     class Russia : Human  
  53.     {  
  54.  
  55.     }  
  56.     //第二步定义泛型接口  
  57.     interface IHuman<T> where T : Human  
  58.     {  
  59.         int Print(T t);  
  60.     }  
  61.       
  62.     //第三步 实现泛型接口  
  63.     class MyUser : IHuman<Human>  
  64.     {  
  65.         public int Print(Human h)  
  66.         {  
  67.             Console.WriteLine("类型:{0},姓名:{1},年龄:{2}",h.GetType(),h.name,h.age);  
  68.             return h.age;  
  69.         }  
  70.     }  
  71.  
  72.     class MyUser1 : IHuman<Chinese>  
  73.     {  
  74.         public int Print(Chinese ch)  
  75.         {  
  76.             Console.WriteLine("类型:{0},姓名:{1},年龄:{2}", ch.GetType(), ch.name, ch.age);  
  77.             return ch.age;  
  78.         }  
  79.     }  
  80.  
  81.     class MyUser2 : IHuman<Russia>  
  82.     {  
  83.         public int Print(Russia ru)  
  84.         {  
  85.             Console.WriteLine("类型:{0},姓名:{1},年龄:{2}", ru.GetType(), ru.name, ru.age);  
  86.             return ru.age;  
  87.         }  
  88.     }  
  89.  
  90.     class GenericClass<T, V>  
  91.         where T : Human  
  92.         where V : struct      //***************泛型类  
  93.     {  
  94.         public void ShowInfo(T t, V v)  
  95.         {  
  96.             Console.WriteLine("用户姓名:{0},年龄:{1}", t.name, v);  
  97.         }  
  98.     }  
  99.      
  100.      
  101. }