使用字符串名称访问类属性

时间:2011-10-20 09:48:03

标签: c# reflection

如何使用字符串变量来获取与给定类关联的属性?如果我使用类名,如下所示: -

  PropertyInfo[] propertyInfo = typeof(Treblet).GetProperties();    

其中Treblet是类名,那么我可以获得该类的属性数。但是如何用字符串变量替换类的名称?感谢所有人和任何帮助。

2 个答案:

答案 0 :(得分:1)

您需要退后一步 - 问题不在于获取属性,而是获得Type值,可以调用GetProperties。为此,您需要Assembly.GetType(string)Type.GetType(string)。在这两种情况下,您都需要名称空间限定的名称,例如System.Guid而非Guid

如果您使用Type.GetType(string) 一个名称空间限定名称,它只会检入mscorlib和调用程序集 - 您需要一个程序集限定名来查找类型在另一个集会中。

答案 1 :(得分:1)

string typeToSearchFor = "Treblet";
PropertyInfo[] propertyInfo = 
     Assembly.GetExecutingAssembly().GetTypes().Where(
         t => t.Name == typeToSearchFor).FirstOrDefault().GetProperties();

这应该可以解决问题。您将需要搜索定义类型的程序集。为简单起见,我刚刚搜索了正在执行的程序集。

注意Name只是类型的名称,FullName是完全命名空间类型的名称。