Делегат указывает только на одну перегрузку, а не на «группу методов». К тому времени, когда вы получаете делегата в метод, вы уже сделали разрешение перегрузки. Обычно это можно сделать только в компиляторе:
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
.