为什么我不能做Class.GetMethod()但是我可以这样做.GetType()。GetMethod()?

时间:2013-08-12 15:45:11

标签: c#

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

我想做前者,因为它似乎会更快,因为我已经知道我想要搜索哪个类......

3 个答案:

答案 0 :(得分:7)

GetMethod是在Type课程中声明的方法...而不是您正在查看的课程。 (特别是,该类可以使用GetMethod方法,这会使事情显着混淆......)

您可以使用

typeof(Class).GetMethod(...)
但是,不是获取特定实例的类型 - 而是您要找的所有内容吗?

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

答案 1 :(得分:2)

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

如果您想获得课程类型,只需使用typeof

typeof(Class).GetMethod(someString);

答案 2 :(得分:1)

嗯,你可以这样做:

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

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

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

Here还有更多内容。