Присоединение MethodInfo к полю делегата (FieldInfo) - PullRequest
7 голосов
/ 22 июня 2011

Простой кейс:

public class MyClass
{
  public Action<double> MyAction;
}

public class AnotherClass
{
  public void MyAction(double value)
  {
    // ...
  }
}

Поскольку я получаю и метод AnotherClass.MyAction(..), и MyClass.MyAction делегирование через отражение, я получаю пару классов MethodInfo / FieldInfo, где я не могу подключить метод к делегату. Также я получаю имена методов / делегатов из строки, я не могу получить доступ к полям / методам экземпляра без отражения. Может ли кто-нибудь помочь мне в этом, или вообще возможна ли такая связь?

1 Ответ

9 голосов
/ 22 июня 2011

Вы должны посмотреть на Delegate.CreateDelegate, в частности:

MethodInfo method = typeof(AnotherClass).GetMethod("MyAction");
FieldInfo field = typeof(MyClass).GetField("MyAction");


AnotherClass obj = // the object you want to bind to

Delegate action = Delegate.CreateDelegate(field.FieldType, obj, method);

MyClass obj2 = // the object you want to store the delegate in

field.SetValue(obj2, action);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...