在 C# 中,使用 in 关键字可以指定逆变性。以下是一个示例,展示如何使用逆变性和泛型接口来处理多个类型的生产者。
逆变性
using System;
// 定义逆变的泛型接口
public interface IProducer<in T>
{
void Produce(T item);
}
// 实现生产者类
public class FruitProducer : IProducer<Fruit>
{
public void Produce(Fruit fruit)
{
Console.WriteLine($"Produced a fruit: {
fruit.Name}");
}
}
public class AppleProducer : IProducer<Apple>
{
public void Produce(Apple apple)
{
Console.WriteLine($"Produced an apple: {
apple.Name}");
}
}
// 基类和子类
public