Cum de a apela această funcție cu metoda de reflexie, parametrii sunt delegați și generice

voturi
-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?
Întrebat 24/10/2019 la 11:56
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Nu este clar ce este întrebarea aici, dar, după cum arată lucrurile pe care le cere:

How do I invoke the generic method openWindow using reflection?

Dacă aceasta este întrebarea , atunci ceea ce trebuie să faci după ce obține , MethodInfocare are definiția generică openWindoweste de a crea o metodă generică folosind MakeGenericMethod

Exemplu:

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

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

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

genericMethod.Invoke(this, obj);

Aceasta este singura modalitate de a putea invoca o metodă generică, nu este posibil să se invoce o definiție , deoarece, ea nu știe ce Teste.

Traducerea, îmi pare rău, nu știu chineză, dar sper că e de înțeles

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

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

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

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

Publicat 25/10/2019 la 14:19
sursa de către utilizator

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