C# 如何使用反射方法调用此函数,;参数是委托和泛型 //这是代码 公共类Foo1Parent { } 公共委托无效回调(T arg1); 公共委托无效回调(); 公开课Foo { public void openWindow(回调onWindowAwake),其中T:Foo1Parent { 调试日志(“测试”); onWindowAwake(T); } //我使用反射调用方法“openWindow” public void openCWindow(回调onback,字符串dialogName) { 类型t=Assembly.getExecutionGassembly().GetType(dialogName); MethodInfo meth1=this.GetType().GetMethod(“openWindow”); object[]obj=新对象[]{null} 方法调用(本,obj); }

C# 如何使用反射方法调用此函数,;参数是委托和泛型 //这是代码 公共类Foo1Parent { } 公共委托无效回调(T arg1); 公共委托无效回调(); 公开课Foo { public void openWindow(回调onWindowAwake),其中T:Foo1Parent { 调试日志(“测试”); onWindowAwake(T); } //我使用反射调用方法“openWindow” public void openCWindow(回调onback,字符串dialogName) { 类型t=Assembly.getExecutionGassembly().GetType(dialogName); MethodInfo meth1=this.GetType().GetMethod(“openWindow”); object[]obj=新对象[]{null} 方法调用(本,obj); },c#,reflection,C#,Reflection,} // 大宗报价 泛型回调的参数是WindowAwake,我不知道怎么做不清楚这里的问题是什么,但是,从您所问的问题来看: 如何使用反射调用通用方法openWindow? 如果这是一个问题,那么在获得具有openWindow通用定义的MethodInfo之后,您需要做的是使用 例如: // this is code public class Foo1Parent { } public delegate void CallBack<T>(T arg1)

} //

大宗报价


泛型回调的参数是WindowAwake,我不知道怎么做

不清楚这里的问题是什么,但是,从您所问的问题来看:

如何使用反射调用通用方法openWindow?

如果这是一个问题,那么在获得具有
openWindow
通用定义的
MethodInfo
之后,您需要做的是使用

例如:

// 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 );
    }
这是调用泛型方法的唯一方法,不可能调用定义,因为它不知道
t
是什么

翻译,对不起,我不懂中文,但希望能理解

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

如何使用反射調用通用的法打开窗口?

如果這是問題,那麼在獲得具有<代码>打开窗口通用定義的<代码>方法信息之後,您需要做的是使用<代码>MakeGenericMethod創建通用方法。


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

这不是C代码。请回答您的问题并使用正确的语言标记。这不是Java代码@如果标签正确,你会得到更快的响应。请尝试找出编程语言并重新标记问题。@Prashant你是对的,看起来更像c#,correctedIt完全不清楚你想做什么,或者为什么。您没有使用
t
变量或
onback
参数执行任何操作。
dialogName
的预期值是多少?我猜这是一个重复的感谢,这是一个通用的反射调用,这个通用的T是在openWindow中创建的,你的意思是你不能这样做,我用另一种方法来做,没有泛型,非常感谢,你可以写中文,这太神奇了。
MethodInfo genericDefinition = this.GetType().GetMethod("openWindow");

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

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

genericMethod.Invoke(this, obj);