Pergunta

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)
Foi útil?

Solução

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.

Outras dicas

It's not straightforward as you have to take into account things like implicit type conversion and variable length parameters (which must be mapped to arrays).

The MethodCallResolver class in the Zentrum framework provides an example of how to find a matching method.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top