首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >得到一类性质的性质

得到一类性质的性质
EN

Stack Overflow用户
提问于 2018-04-07 16:05:49
回答 3查看 848关注 0票数 2

我想要得到类的属性的属性。

我现在拥有的是:

代码语言:javascript
运行
复制
foreach (var v in test.GetType().GetProperties())
{
    foreach (var p in v.GetType().GetProperties())
    {
    }
}

第一个foreach循环工作良好,并获得类变量test的属性。但是,在第二个循环中,我得到了输出,如MemberTypeReflectedTypeModule等。不是真正的财产。

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

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-07 16:09:36

在第二个循环中,GetType()返回一个PropertyInfo对象。您必须将v的propertyType作为v.PropertyType.GetProperties()来实现您想要的结果。

因此,代码应该是:

代码语言:javascript
运行
复制
foreach (var v in test.GetType().GetProperties())
{
    foreach (var p in v.PropertyType.GetProperties())
    {
        // Stuff
    }
}
票数 8
EN

Stack Overflow用户

发布于 2018-04-07 16:09:34

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

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

票数 7
EN

Stack Overflow用户

发布于 2018-04-09 21:54:36

GetProperties()获取PropertyInfo对象,这些对象告诉您有关对象属性的信息。您需要使用GetValue来实际获取这些属性的值。在那里,您可以重复这个过程,以获得该对象的属性值。

代码语言:javascript
运行
复制
foreach (var v in test.GetType().GetProperties())
{
    var propertyValue = v.GetValue(test);
    foreach (var p in propertyValue.GetType().GetProperties())
    {
        var subPropertyValue = p.GetValue(propertyValue);
        Console.WriteLine("{0} = {1}", p.Name, subPropertyValue);
    }
}

编辑完值后,使用SetValue将其持久化回对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49709286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档