Is this a bug in dynamic?
When implementing dynamic dispatch using dynamic on a generic class, and the generic type parameter is a private inner class on another class, the runtime binder throws an exception. For example: 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>