使用ClassName作为参数

时间:2015-09-30 19:07:21

标签: c# reflection

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

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

如果我的所有方法都在ClientValidation类下,那么这很有效,但它们不是。我想要做的是能够动态传递类名,这样行可能看起来更像:

var dynamicClassName = GetClassNameMethod();

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

这可能吗?我该怎么做?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

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"。