c#通用接口和继承

c#通用接口和继承,c#,inheritance,interface,C#,Inheritance,Interface,为我的问题选择的标题不是很精确,但我不知道我要找的术语,或者它是否可能 我想的是一系列的消费者问题 如果您这样定义消费者类 public class Consumer<T, U> : IConsumer<T, U> { ... } 它将起作用,因为现在您指定T和U将始终分别是IProducer和IProduct 我希望上述解释是可以理解的;无论哪种方式,您都应该阅读,以便更好地理解泛型类型的约束。您认为U是什么?听起来您需要两个类型参数。在本例中,IPProd

为我的问题选择的标题不是很精确,但我不知道我要找的术语,或者它是否可能

我想的是一系列的消费者问题 如果您这样定义
消费者

public class Consumer<T, U> : IConsumer<T, U>
{
    ...
}
它将起作用,因为现在您指定
T
U
将始终分别是
IProducer
IProduct



我希望上述解释是可以理解的;无论哪种方式,您都应该阅读,以便更好地理解泛型类型的约束。

您认为
U
是什么?听起来您需要两个类型参数。在本例中,IPProduct(我在代码中对其进行了更改)我想您可能需要
I消费者,其中T:IProducer,其中U:ipproduct
IProducer,其中T:IProduct
?@juharr这听起来是正确的答案,为什么不发布呢?如果最终生成并使用了一系列
t
,请查看.NET framework中的
IObserver
private IProducer<IProduct> producer;   //DeviceManager

private IConsumer<IProducer<IProduct>> consumer;  //DeviceViewManager            


public MainPage()
{
    this.InitializeComponent();

    producer = new Producer<IProduct>();
    consumer = new Consumer<IProducer<IProduct>>();
}
public class Consumer<T, U> : IConsumer<T, U>
{
    ...
}
public interface IConsumer<T, U>
    where T : IProducer<U>   // T needs to "be" an IProducer<U>
    where U : IProduct       // U needs to "be" an IProduct
{
    ...
}
public class Consumer<T, U> : IConsumer<T, U>
    where T : IProducer<U>
    where U : IProduct
{
    ...
}