Comment appeler cette fonction avec la méthode de réflexion, les paramètres sont délégués et génériques

voix
-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?
Créé 24/10/2019 à 11:56
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

On ne sait pas ce que la question ici est que, de l'apparence des choses que vous demandez:

How do I invoke the generic method openWindow using reflection?

Si cela est la question alors ce que vous devez faire après avoir obtenu le MethodInfoqui a la définition générique openWindowest de créer une méthode générique utilisant MakeGenericMethod

Exemple:

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

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

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

genericMethod.Invoke(this, obj);

Ceci est la seule façon que vous pouvez invoquer une méthode générique, il est impossible d'invoquer une définition car il ne sait pas ce qui Test.

Traduction, désolé, je ne sais pas chinois, mais espérons qu'il est compréhensible

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

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

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

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

Créé 25/10/2019 à 14:19
source utilisateur

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