Come chiamare questa funzione con metodo di riflessione, i parametri sono delegati e farmaci generici

voti
-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?
È pubblicato 24/10/2019 alle 11:56
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Non è chiaro che cosa la questione qui è che, dagli sguardi delle cose che si sta chiedendo:

How do I invoke the generic method openWindow using reflection?

Se questa è la domanda, allora ciò che è necessario fare dopo che ottenete il MethodInfoche ha la definizione generica di openWindowè quello di creare un metodo generico utilizzando MakeGenericMethod

Esempio:

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

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

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

genericMethod.Invoke(this, obj);

Questo è l'unico modo è possibile richiamare un metodo generico, non è possibile invocare una definizione perché, ma non sa cosa Tsia.

Traduzione, mi dispiace, non so cinese, ma la speranza è comprensibile

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

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

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

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

Risposto il 25/10/2019 a 14:19
fonte dall'utente

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