使用类名作为参数
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"。
我有几个包含验证方法的 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"。