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
{
...
}