¿Es esto un error en dinámica?

Al implementar el despacho dinámico usandodynamic en una clase genérica, y el parámetro de tipo genérico es una clase interna privada en otra clase, la carpeta de tiempo de ejecución arroja una excepción.

Por ejemplo

using System;

public abstract class Dispatcher<T> {
    public T Call(object foo) { return CallDispatch((dynamic)foo); }

    protected abstract T CallDispatch(int foo);
    protected abstract T CallDispatch(string foo);
}

public class Program {
    public static void Main() {
        TypeFinder d = new TypeFinder();

        Console.WriteLine(d.Call(0));
        Console.WriteLine(d.Call(""));
    }

    private class TypeFinder : Dispatcher<CallType> {
        protected override CallType CallDispatch(int foo) {
            return CallType.Int;
        }

        protected override CallType CallDispatch(string foo) {
            return CallType.String;
        }
    }

    private enum CallType { Int, String }
}

Aquí unRuntimeBinderException será lanzado con el mensaje

'Dispatcher.CallDispatch (int)' es inaccesible debido a su nivel de protección

La razón de la inaccesibilidad es que el parámetro de tipoT es el @ privaCallType cualesDispatcher<T> No puede acceder. Por lo tanto,CallDispatch debe ser inaccesible, pero no lo es, porque es accesible comoT.

¿Es esto un error condynamic, ¿o se supone que esto no es compatible?

Respuestas a la pregunta(2)

Su respuesta a la pregunta