Ковариация значения в словареC#

Место общения программистов C#
Anonymous
Ковариация значения в словаре

Сообщение Anonymous »

Я пытаюсь добавить более производный тип в качестве значения в словарь, но получаю следующую ошибку:
Невозможно преобразовать HandleIntegrationEvent в HandleIntegrationEvent< IBaseEvent>
Пример

Код: Выделить всё

using System.Threading.Tasks;
using System.Collections.Generic;

public interface IBaseEvent
{
string Name { get; }
}

public class UserCreatedEvent: IBaseEvent
{
public string Name { get; } = "UserCreatedEvent";
}

public delegate Task HandleIntegrationEvent(TR @event) where TR: IBaseEvent;

public class IntegrationBus
{
private readonly IDictionary _listeners = new Dictionary();

public void RegisterEventListener(string @event, HandleIntegrationEvent listener) where TR: IBaseEvent
{
// ERROR: cannot convert from HandleIntegrationEvent to HandleIntegrationEvent
_listeners.Add(@event, listener);
}
}
Я просто не могу этого понять и уже некоторое время пытаюсь понять проблему.
Насколько я понимаю, общее ограничение должно гарантировать, что экземпляр реализован интерфейс IBaseEvent.
А пока у меня просто мысленный блок

Подробнее здесь: https://stackoverflow.com/questions/787 ... dictionary

Вернуться в «C#»