Search code examples
c#.netdynamic-language-runtimedynamicobjecttryinvokemember

When overriding DynamicObject's TryInvokeMember(), how to choose a correct overload to invoke?


How would you implement an algorithm to choose the correct method overload, when overriding the following method on DynamicObject?

bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)

Solution

  • If this overload issue is due to forwarding to statically implemented methods. A solution could be to just let the dlr do the work for you. Open source Dynamitey has a static method that creates all the dlr binding code, caches appropriately and then invokes it and the dlr binder does overload resolution. example. This example handles named/optional params and inferred generics in the overload resolution, however DynamicObject does not expose explict generics or ref out params in the invocation.