Como chamar esta função com o método de reflexão, os parâmetros são delegados e genéricos

votos
-1
// 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 );
}
}


//this is my code


//this object[] How do you write it? or has other methods?
Publicado 24/10/2019 em 11:56
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

É claro que a questão aqui é, mas, a partir da aparência das coisas que você está pedindo:

How do I invoke the generic method openWindow using reflection?

Se esta é a pergunta então o que você precisa fazer depois de obter o MethodInfoque tem a definição genérica de openWindowé criar um método genérico usando MakeGenericMethod

Exemplo:

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

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

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

genericMethod.Invoke(this, obj);

Esta é a única maneira que você pode chamar um método genérico, não é possível invocar uma definição porque, não sei o que Té.

Tradução, desculpe, eu não sei chinês, mas espero que seja compreensível

目前 尚不 清楚 這裡 的 問題 是 什麼, 但是 從 您 要 詢問 的 事物 的 外觀 來看:

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

如果這是問題,在獲得具有那麼openWindow通用定義的MethodInfo之後,需要做的您是使用MakeGenericMethod創建通用MÉTODOS.

這是調用泛型方法的唯一方法,無法調用定義,它不知道因為T是什麼.

Respondeu 25/10/2019 em 14:19
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more