GregC
GregC

Reputation: 8007

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)

Upvotes: 1

Views: 756

Answers (2)

jbtule
jbtule

Reputation: 31809

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.

Upvotes: 2

Sean
Sean

Reputation: 62532

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.

Upvotes: 1

Related Questions