Как назначить статический метод делегату в C # с помощью отражения - PullRequest
0 голосов
/ 22 декабря 2011

Рассмотрим следующий код:

internal delegate object FactoryMethod();

Теперь скажите, что у меня есть следующий код:

String myStaticMethod = "FooFactory.GetInstance()";

Как мне сделать следующее?

FactoryMethod myMethod = //A delegate pointing to FooFactory.GetInstance()

Я гуглю, но не могу найти чистый пример или хотя бы один, который имеет дело со статическими методами.

Ответы [ 2 ]

4 голосов
/ 22 декабря 2011

Использовать одну из перегрузок Delegate.CreateDelegate.Вот один из возможных способов:

var className = "FooFactory";
var methodName = "GetInstance";
var implType = Type.GetType(className);
var implMethod = implType.GetMethod(methodName, new Type[0]);
var res = Delegate.CreateDelegate(typeof(FactoryMethod), implMethod);
0 голосов
/ 22 декабря 2011

Я нашел это:

typeof(YourClass).GetMethod("GetInstance", BindingFlags.Public | BindingFlags.Static);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...