如何使用字符串变量来获取与给定类关联的属性?如果我使用类名,如下所示: -
PropertyInfo[] propertyInfo = typeof(Treblet).GetProperties();
其中Treblet
是类名,那么我可以获得该类的属性数。但是如何用字符串变量替换类的名称?感谢所有人和任何帮助。
答案 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是完全命名空间类型的名称。