在DynamicObject
上覆盖以下方法时,如何实现算法来选择正确的方法重载?
bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
答案 0 :(得分:2)
如果此过载问题是由于转发到静态实现的方法。解决方案可能是让dlr为您完成工作。开源Dynamitey有一个静态方法,可以创建所有dlr绑定代码,适当地缓存然后调用它,dlr绑定器会重载解析。 example。此示例在重载决策中处理命名/可选参数和推断的泛型,但DynamicObject不会在调用中公开explict泛型或ref out params。
答案 1 :(得分:1)
这不是直截了当的,因为您必须考虑隐式类型转换和可变长度参数(必须映射到数组)之类的内容。
MethodCallResolver框架中的Zentrum类提供了如何查找匹配方法的示例。