为什么可以';我做Class.GetMethod(),但我能做到.GetType().GetMethod()

本文关键字:GetMethod GetType 我做 Class 为什么 | 更新日期: 2023-09-27 18:27:32

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

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

为什么可以';我做Class.GetMethod(),但我能做到.GetType().GetMethod()

GetMethod是在Type类上声明的方法。。。不在您正在查看的类上。(特别是,该类可能有一个GetMethod方法,这会使事情变得非常混乱…)

你可以使用

typeof(Class).GetMethod(...)

不过,与其得到特定实例的类型,不如说这就是你想要的全部吗?

EDIT:请注意,GetType(string)仅在TypeAssembly(可能还有一些其他类型)上声明。正常的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")在编译时解析。

这里有更多关于它的信息。