-1

为什么我不能做,Class.GetMethod(string)但我可以做this.GetType().GetMethod(string)

我想做前者,因为它似乎会快很多,因为我已经知道我想在哪个类中搜索......

4

3 回答 3

7

GetMethod是在Type类上声明的方法...而不是在您正在查看的类上。(特别是,该类也可能一个GetMethod方法,这会严重混淆事情......)

您可以使用

typeof(Class).GetMethod(...)

但是,而不是获取特定实例的类型 - 这就是您要寻找的全部吗?

编辑:请注意,GetType(string)仅在TypeAssembly(可能还有其他一些类型)上声明。普通Object.GetType()方法没有字符串参数。

于 2013-08-12T15:47:15.693 回答
2

因为前者是您在类上调用静态方法的方式。

如果要获取类的类型,只需使用typeof

typeof(Class).GetMethod(someString);
于 2013-08-12T15:47:24.973 回答
1

好吧,您可以执行以下任一操作:

typeof (MyClass).GetMethod("MyMethod");

或者

MyClass myClass = new MyClass();
myClass.GetType().GetMethod("MyMethod");

只是添加 - myClass.GetType().GetMethod("MyMethod")- 在运行时解决,typeof(MyClass).GetMethod("MyMethod")在编译时。

这里有更多关于它的内容。

于 2013-08-12T15:48:34.457 回答