Как вызвать эту функцию с помощью метода отражения , Параметры являются делегатами и обобщениями. - PullRequest
0 голосов
/ 24 октября 2019
// this is code
    public class Foo1Parent
    {
    }
    public delegate void CallBack<T>(T arg1);
    public delegate void CallBack(); 
    public class Foo
    {
    public void openWindow<T>(CallBack<T> onWindowAwake) where T:Foo1Parent
     {
      Debug.Log("test");
      onWindowAwake(T);
     }
//I use reflection to call methods "openWindow"
 public void openCWindow(CallBack onback, string dialogName)
    {
        Type t = Assembly.GetExecutingAssembly().GetType(dialogName);
        MethodInfo meth1 = this.GetType().GetMethod("openWindow");
       object[] obj = new object[] { null }
        meth.Invoke(this, obj );
    }

} //

Цитата

Параметры универсального элемента - CallBack onWindowAwake. Я не знаю, как это сделать

1 Ответ

0 голосов
/ 25 октября 2019

Непонятно, что за вопрос здесь, но, судя по всему, вы спрашиваете:

How do I invoke the generic method openWindow using reflection?

Если это вопрос, то что вам нужно делать после того, как выполучить MethodInfo с общим определением openWindow - создать универсальный метод с использованием MakeGenericMethod

Пример:

MethodInfo genericDefinition = this.GetType().GetMethod("openWindow");

MethodInfo genericMethod = genericDefinition.MakeGenericMethod(typeof(Foo1Parent));

object[] obj = new object[] { null };

genericMethod.Invoke(this, obj);

Это единственный способВы можете вызвать универсальный метод, невозможно вызвать определение, потому что он не знает, что такое T.

Перевод, извините, я не знаю китайский, но надеюсь, что это

1023 *如何使用反射調用通用的法openWindow?

如果 這 是 101 : :10 , 那麼 在 獲得 具有 openWindow 1028 MakeGenericMethod 1029 *1029* 1031

因為 它 不 知道 T 是 什麼.

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