我有一个通用集合(Dictionary),它存储一个枚举和委托。因此,如果用户将方法的枚举值作为参数提供,则集合中的相应委托将被执行。
委托指向的此方法已重载。调用方法时,如何选择要执行的方法版本?
由于
答案 0 :(得分:3)
委托仅指向单个重载 - 而不指向“方法组”。当您获得方法的委托时,您已经完成了重载解析。通常,您只需在编译器中执行此操作:
using System;
class Foo {
int Bar() { return 1; }
void Bar(int a) { }
static void Main() {
Foo foo = new Foo();
Func<int> myDelegate = foo.Bar; // points to "int Bar()" version
}
}
如果问题涉及通过反射获取重载方法 - 那么您可以在Type.GetMethod()
的参数中指定模式(作为Type[]
)。这应该给你你想要的方法。
要从MethodInfo
获取代理,请使用Delegate.CreateDelegate
。
答案 1 :(得分:0)
作为特定签名的代表。当您使用具有重载的Method实例化委托时,它将使用其签名最佳匹配委托签名的重载。