我有几个类,其中包含验证方法:ClientValidation, PaymentValidation等。计划是动态地构建一个方法列表,我将使用这些方法来验证记录。要做到这一点,我需要能够获得每个类中包含的方法列表。为此,我编写了以下行:
var methods = typeof( ClientValidation ).GetMethods();
如果我的所有方法都在ClientValidation类下,这将非常有效,但事实并非如此。我想要做的是能够动态地传入类名这样行看起来更像:
var dynamicClassName = GetClassNameMethod();
var methods = typeof( dynamicClassName ).GetMethods();
这可能吗?我该怎么做呢?
你可以这样做:
var methods = Type.GetType(full_class_name).GetMethods();
其中full_class_name
是完整的类名(带命名空间)。例如:"ConsoleApplication1.Class1"。
如果你想使用类名而不使用命名空间(例如:"Class1"),您可以像这样在程序集中搜索这样的类:
var methods = Assembly.GetExecutingAssembly().GetTypes().First(x => x.Name == class_name).GetMethods();
其中class_name
为类名,如"Class1"。