编辑:原来我在下面的原始问题中报告的错误仅在调试器中停止时在Visual Studio即时模式面板中执行此语句时发生。
类型。GetMethod(“Log”,新类型[]{typeof(string)});
当在程序本身中执行时,该语句返回我正在寻找的方法,并且我可以将其用作委托。
我修改过的问题是:为什么在调试器即时模式面板中执行此操作会生成错误?有没有办法在调试器即时模式面板中执行此语句而不出错?
----下面是原始问题----
我正在编写一些代码,这些代码既可以在Unity3D中运行,也可以单独运行,并且有一个自定义记录器,应该委托给Unity3D调试。日志()在Unity跑步时。
Unity列出了Debug的两个方法签名。日志:
公共静态void Log(对象消息);公共静态void Log(对象消息,对象上下文);
我能得到UnityEngine类型。使用反射进行调试:
类型类型=系统。反思。组装。加载(“UnityEngine.CoreModule”)。GetType(“UnityEngine.Debug”);
但是,我无法使用GetMethod()成功获取Log方法。
我可以看到使用GetMethods()列出的两个Log方法签名。我正在寻找第一个:[11]:{Void Log(System.Object)}
>类型。获取方法();{System.Reflection.MethodInfo[47]}[0]:{UnityEngine.ILogger get_unityLogger()}[1] :{无效绘图线(UnityEngine.Vector3,UnityEnginee.Vector3、UnityEngine.Color,Single)}[2] :{无效绘图线(UnityEngine.Vector3、UnityEnginee.Vector3和UnityEngine.Color)}[3] :{无效绘图线(UnityEngine.Vector3,UnityEngine.Vector3)}[4] :{空心绘制线(UnityEngine.Vvector3、UnityEngine.Vvector3、UnityEngine.Color、Single、Boolean)}[5] :{无效DrawRay(UnityEngine.Vector3,UnityEnginee.Vector3、UnityEngine.Color,Single)}[6] :{Void DrawRay(UnityEngine.VVector3、UnityEngine.VVector3、UnityEngine.Color)}[7] :{无效DrawRay(UnityEngine.Vector3,UnityEngine.Vector3)}[8] :{无效DrawRay(UnityEngine.Vector3,UnityEnginee.Vector3、UnityEngine.Color、Single、Boolean)}[9] :{空心断开()}[10] :{无效调试中断()}[11] :{无效日志(System.Object)}[12] :{无效日志(System.Object,UnityEngine.Object)}...
看一看类似问题的答案避免不明确的匹配异常以下是我尝试过的:
>类型。GetMethod(“日志”);系统。反思。AmbiguousMatchException:找到不明确的匹配。>类型。GetMethod(“日志”,新类型[]{typeof(System.Object)});在类型“System”中找不到方法“CreateInstance”。数组”。>类型。GetMethod(“Log”,新类型[]{typeof(string)});在类型“System”中找不到方法“CreateInstance”。数组”。