Hogyan hívja ezt a funkciót reflexiós módszer, Parameterek küldöttek és a generikus gyógyszerek

szavazat
-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?
A kérdést 24/10/2019 11:56
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Nem világos, hogy mi a kérdés itt az, de úgy néz ki a dolog, amit kér:

How do I invoke the generic method openWindow using reflection?

Ha ez a kérdés, hogy mit kell tennie, miután kap a MethodInfoamelynek a generikus definíciója openWindowaz, hogy hozzon létre egy általános módszer MakeGenericMethod

Példa:

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

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

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

genericMethod.Invoke(this, obj);

Ez az egyetlen módja annak, akkor hivatkozhat egy általános módszer, nem lehet hivatkozni a meghatározás, mert azt nem tudja, mi Taz.

Fordítás, bocs, nem tudom, de remélem, a kínai érthető

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

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

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

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

Válaszolt 25/10/2019 14:19
a forrás felhasználó

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