[英]C# Downcasting a generic type
interface IMyEvent { }
class SpecificEvent : IMyEvent { }
interface IMySubscriber<TEvent> where TEvent : IMyEvent { }
class MySubscriber<TEvent> : IMySubscriber<TEvent> where TEvent: IMyEvent { }
class EventPublisher
{
public void Subscribe(IMySubscriber<IMyEvent> subscriber)
{
}
}
我不明白为什么无法使用MySubscriber<SpecificEvent>
对象执行Subscribe方法。
new EventPublisher().Subscribe(new MySubscriber<SpecificEvent>());
它说它不能将MySubscriber<SpecificEvent>
IMySubscriber<IMyEvent>
为IMySubscriber<IMyEvent>
。 您能否解释一下为什么会发生这种情况,或者提供一些链接以供我阅读。
为此,您必须使用out
泛型参数标记接口:
interface IMySubscriber<out TEvent> where TEvent : IMyEvent { }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.