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);
}
}
}
c#泛型接口的一个例子
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 泛型的概述 我们先来了解一下泛型 泛型JDK1.5以后出现的机制是一种把类型明确的工作推迟到创建对象或者调用方法的...