c#泛型接口的一个例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApp8
{
    public interface Ianimal<T,U> where T:class   //约束T,U只能取class类或派生类
    {
        void a1(T t);
        void a2(U u);//中间没有逗号隔开,以空格隔开
    }
    //定义实体类
    public class Dog1
    {
        public string Content { get; set; }
    }
    public class Dog2
    {
        public string Content { get; set; }
    }
    public class Cat1
    {
        public string Content { get; set; }
    }
    public class Cat2
    {
        public string Content { get; set; }
    }
    //实现泛型接口中的方法
    public class Say1:Ianimal<Dog1,Cat1>    //继承并调用接口实现方法一
    {
        public void a1(Dog1 D)
        {
            Console.WriteLine(D.Content);
        }
        public void a2(Cat1 C)
        {
            Console.WriteLine(C.Content);
        }
    }
    public class Say2 : Ianimal<Dog2, Cat2>    //继承并调用接口实现方法二
    {
        public void a1(Dog2 D)
        {
            Console.WriteLine(D.Content);
        }
        public void a2(Cat2 C)
        {
            Console.WriteLine(C.Content);
        }
    }



    class Program
    {
        static void Main(string[] args)
        {
            Dog1 D1 = new Dog1();
            D1.Content = "wow-wow";
            Cat1 C1 = new Cat1();
            C1.Content = "miao-miao";
            Dog2 D2 = new Dog2();
            D2.Content = "汪汪";
            Cat2 C2 = new Cat2();
            C2.Content = "喵喵";

            //创建对象,调用相同接口的不同方法
            Ianimal<Dog1, Cat1> Is = new Say1(); //实例化Say1类调用接口的方法
            Ianimal<Dog2, Cat2> Is2 = new Say2();//实例化Say2类调用接口的方法

            Is.a1(D1);
            Is.a2(C1);
            Is2.a1(D2);
            Is2.a2(C2);
        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容