泛型接口

 public abstract class DogCmd
    {
        public abstract string GetCmd();
    }
    public class SitDogCmd : DogCmd
    {
        public override string GetCmd()
        {
            return "sit";
        }
    }
    public class JumpDogCmd : DogCmd
    {
        public override string GetCmd()
        {
            return "jump";
        }
    }
    public interface IDogLearn<T> where T:DogCmd//泛型接口的定义,并且添加了约束,T限制为只能是DogCmd类及其派生类
    {
        void Act(T cmd);//接口里的方法没有实体,也没有访问关键字
    }

 public class Corky:Dog,IDogLearn<SitDogCmd>,IDogLearn<JumpDogCmd>//接口的实现
    {
        public Corky(string name) : base(name)/
        {
        }
        public void Act(SitDogCmd cmd)//定义接口内的同名方法
        {
            Console.WriteLine(cmd.GetCmd()); 
        }
        public void Act(JumpDogCmd cmd)
        {
            Console.WriteLine(cmd.GetCmd());
        }
      
     }
class Program
    {
        static void Main(string[] args)
        {
            Corky corky = new Corky("CK");
            corky.Act(new SitDogCmd());//通过使用SitDogCmd类型参数调用了自己实现的IDogLearn接口里的方法Act

corky.Act(new JumpDogCmd());

          }

      }

原文地址:https://www.cnblogs.com/cicily/p/10943791.html