У меня есть простой код:
public interface IEvent {}
public class ObjectClickEvent : IEvent {
public Object Object;
public ObjectClickEvent(Object object) {
Object = object;
}
}
public abstract class EventReceiver<T> where T : IEvent {
protected readonly Controller Controller;
protected EventReceiver(Controller controller) {
Controller = controller;
}
public abstract void ReceiveEvent(T @event);
}
public class ObjectClickEventReceiver : EventReceiver<ObjectClickEvent> {
public ObjectClickEventReceiver(Controller controller) : base(controller) {
}
public override void ReceiveEvent(ObjectClickEvent @event) {
}
}
Затем я хочу инициализировать все мои приемники внутри контроллера
var receivers = new List<EventReceiver<IEvent>>();
var receiver = new LetterClickEventReceiver(this);
receivers.Add(receiver);
Но получена ошибка компиляции:
Argument type 'LetterClickEventReceiver' is not assignable to parameter type
'ScriptsV2.Core.Controller.EventReceivers.EventReceiver<IEvent>'
Вопрос в том, почему это происходит, если я утверждаю, что мой конкретный получатель расширяет EventReceiver ?Почему дочерний объект нельзя добавить в список родительских объектов?