获取类属性的属性

use*_*102 2 c# reflection system.reflection

我想获得类的属性的属性.

我现在拥有的:

foreach (var v in test.GetType().GetProperties())
{
    foreach (var p in v.GetType().GetProperties())
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个foreach循环工作正常,并获取类变量的属性test.然而,在第二循环中,我得到的输出,例如MemberType,ReflectedType,Module等不是实际属性.

我的目标是获取类属性的属性,然后编辑它们的值(使用另一个函数截断它们).

谢谢.

Die*_*uza 8

在第二个循环GetType()返回一个PropertyInfo对象.您必须获得v的propertyType v.PropertyType.GetProperties()以实现您想要的.

所以,代码应该是:

foreach (var v in test.GetType().GetProperties())
{
    foreach (var p in v.PropertyType.GetProperties())
    {
        // Stuff
    }
}
Run Code Online (Sandbox Code Playgroud)


Eri*_*ert 7

返回的类型v.GetType()是PropertyInfo 的类型,因为v它是属性信息.您不需要PropertyInfo类型的属性,您需要类型本身的属性.

使用v.PropertyType,而不是v.GetType().