[英]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.