我想创建一个方法,它接受“任何继承自Object数据类型的类型”(通用)作为参数,然后迭代它的所有属性。
我试过了:
foreach (var prop in obj.GetType().GetProperties())
{
Console.WriteLine("{0} = {1}", prop.Name, prop.GetValue(obj, null));
}
但是PCL项目中不存在GetProperties()
方法。
答案 0 :(得分:3)
在大多数PCL配置文件中,至少是基于.NET 4.5的配置文件,您应该使用TypeInfo
而不是Type
来获取类型信息。
基本上您可以用
替换obj.GetType().GetProperties()
obj.GetType().GetTypeInfo().GetProperties()
有关为特定类型声明的所有属性的列表,请使用DeclaredProperties
而不是GetProperties()
。对于完整的属性列表,包括继承,非公共,实例和静态属性,您可以使用扩展方法GetRuntimeProperties()
。
有关TypeInfo
的更多信息,请参阅MSDN documentation。