C # generische Handler, was verstehe ich falsch?

Ich bin mir nicht sicher, warum das nicht funktioniert. TResponse für out und handlerMap add gefällt ihm nicht, obwohl TResponse eine IResponse ist? Ich glaube, ich verstehe etwas über Generika oder vielleicht sogar über C # falsch. Warum funktioniert das nicht und gibt es einen besseren Weg, um das zu erreichen, was ich hier versuche?

private static Dictionary<Type, List<IResponseHandler<IResponse>>> _handlerMap;

public static void AddResponseHandler<TResponse>(IResponseHandler<TResponse> handler) where TResponse : IResponse
{
    List<IResponseHandler<TResponse>> handlers;
    _handlerMap.TryGetValue(typeof (TResponse), out handlers);

    if (handlers == null)
    {
        handlers = new List<IResponseHandler<TResponse>>();
        _handlerMap.Add(typeof (TResponse), handlers);
    }

    handlers.Add(handler);
}

public interface IResponseHandler<TResponse> where TResponse : IResponse
{
    void Handle(TResponse response);
}

Beim Kompilieren treten folgende Fehler auf:

Fehler 1 Die beste überladene Methode für 'System.Collections.Generic.Dictionary >>. TryGe‌ tValue (System.Type, out System.Collections.Generic.List>)' hat einige ungültige Argumente C: ... \ NetworkManager. cs 39 13 Versammlung‌ -CSharp-vs

Fehler 2 Argument 2: Konvertierung von 'out System.Collections.Generic.List>' nach 'out System.Collections.Generic.List>' nicht möglich. C: ... \ NetworkManager.cs 39 61 Assembly-CSharp-vs

If I change TResponse to IResponse within the method, everything above
handlers.Add(handler) compiles fine. I don't understand why I can't add a handler of 
<TResponse : IResponse> to a List<IResponseHandler<IReponse>>?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage