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);