我正在使用GetRuntimeMethod
来取消方法类型。一切正常,但我注意到有一个GetMethod
。两者有什么区别?
this.target.GetType().GetRuntimeMethod(
"MethodName",
new System.Type[0]
)?.Invoke(targetObject, null);
从名称中我只能猜测GetRuntimeMethod
在程序运行时有效。 GetMethod
在程序编译期间有效吗?
使用一种代替另一种有什么好处吗? (最后一个问题可以从答案中扣除,这两者当然有什么区别)
答案 0 :(得分:0)
GetMethod可用于System.Type
的抽象基类RuntimeType
。 GetRuntimeMethod
在验证类型后实际上调用了GetMethod
(并且不是RuntimeType
的子代(不是用户定义的(可能是用户定义的)),因此它比{{1} }。如果Type
未传递从GetMethod
派生的类,则会引发异常。
GetRuntimeMethod
是允许多个实现的抽象基类。 系统将始终提供派生类RuntimeType
。在 反射,创建所有以单词Runtime开头的类 系统中每个对象仅支持一次,并且支持比较操作。
this article还提供了有关扩展Type
的详细信息,以及何时需要专门使用RuntimeType
的细节。