yansıma yöntemi ile bu işlevi çağırmak nasıl Parametreler delegeler ve jenerik vardır

oy
-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?
Oluştur 24/10/2019 saat 11:56
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Burada soru soruyorsun şeylerin görünüyor gelen, ama ne belirsizdir:

How do I invoke the generic method openWindow using reflection?

Bu soru sizin olsun sonra yapmanız gerekenler ardından ise MethodInfojenerik bir tanıma sahip olan openWindowbir kullanarak genel bir yöntem oluşturmak için MakeGenericMethod

Örnek:

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

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

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

genericMethod.Invoke(this, obj);

Bu genel bir yöntemi çağırmak tek yolu, ne bilmediği için bir tanım çağırmak mümkün değildir Tolduğunu.

Çeviri, üzgünüm, Çince bilmek ama bu anlaşılabilir umut yok

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

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

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

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

Cevap 25/10/2019 saat 14:19
kaynak kullanıcı

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