使用类名作为参数

Using a ClassName as a parameter

我有几个包含验证方法的 classes:ClientValidation、PaymentValidation 等。计划是动态构建我将用于验证记录的方法列表。为此,我需要能够获得每个 class 中包含的方法列表。为此,我编写了以下行:

var methods = typeof( ClientValidation ).GetMethods();

如果我的所有方法都在 ClientValidation class 下,这会很好用,但它们不是。我想要做的是能够动态传递 class 名称,这样该行看起来更像:

var dynamicClassName = GetClassNameMethod();

var methods = typeof( dynamicClassName ).GetMethods();

这可能吗?我该怎么做?

你可以这样做:

var methods = Type.GetType(full_class_name).GetMethods();

其中 full_class_name 是完整的 class 名称(带有命名空间)。例如:"ConsoleApplication1.Class1".

如果您想使用不带命名空间的 class 名称(例如 "Class1"),您可以像这样在程序集中搜索这样的 class:

var methods = Assembly.GetExecutingAssembly().GetTypes().First(x => x.Name == class_name).GetMethods();

其中 class_name 是 class 名称,例如 "Class1"。