Hoe deze functie met reflectie methode aan te roepen, Parameters zijn afgevaardigden en generieken

stemmen
-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?
De vraag is gesteld op 24/10/2019 om 11:56
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Het is onduidelijk wat de vraag is hier, maar, uit de blikken van dingen die je vraagt:

How do I invoke the generic method openWindow using reflection?

Als dit de vraag is dan wat je moet doen nadat je de MethodInfowaar de algemene definitie heeft van openWindowis om een generieke methode gebruik maken MakeGenericMethod

Voorbeeld:

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

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

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

genericMethod.Invoke(this, obj);

Dit is de enige manier kunt u een generieke methode aan te roepen, is het niet mogelijk om een definitie te roepen, want het maakt niet weet wat Thet is.

Vertaling, sorry, ik weet niet Chinees, maar hoop dat het is begrijpelijk

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

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

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

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

antwoordde op 25/10/2019 om 14:19
bron van user

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