为什么可以';我做Class.GetMethod(),但我能做到.GetType().GetMethod()
本文关键字:GetMethod GetType 我做 Class 为什么 | 更新日期: 2023-09-27 18:27:32
为什么我不能做Class.GetMethod(string)
,但我可以做this.GetType().GetMethod(string)
?
我想做前者,因为它似乎会更快,因为我已经知道我想在哪个类中搜索…
GetMethod
是在Type
类上声明的方法。。。不在您正在查看的类上。(特别是,该类可能也有一个GetMethod
方法,这会使事情变得非常混乱…)
你可以使用
typeof(Class).GetMethod(...)
不过,与其得到特定实例的类型,不如说这就是你想要的全部吗?
EDIT:请注意,GetType(string)
仅在Type
和Assembly
(可能还有一些其他类型)上声明。正常的Object.GetType()
方法没有字符串参数。
因为前者是在类上调用静态方法的方式。
如果您想获得类的类型,只需使用typeof
:
typeof(Class).GetMethod(someString);
好吧,你可以做任何一件事:
typeof (MyClass).GetMethod("MyMethod");
或
MyClass myClass = new MyClass();
myClass.GetType().GetMethod("MyMethod");
只是添加-myClass.GetType().GetMethod("MyMethod")
-在运行时解析,其中typeof(MyClass).GetMethod("MyMethod")
在编译时解析。
这里有更多关于它的信息。