枚举,委托字典集合,其中委托指向重载方法

时间:2009-04-03 09:52:31

标签: c# .net

我有一个通用集合(Dictionary),它存储一个枚举和委托。因此,如果用户将方法的枚举值作为参数提供,则集合中的相应委托将被执行。

委托指向的此方法已重载。调用方法时,如何选择要执行的方法版本?

由于

2 个答案:

答案 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实例化委托时,它将使用其签名最佳匹配委托签名的重载。