首页 > 后端开发 > C++ > 如何使用反射检索班级的属性?

如何使用反射检索班级的属性?

Barbara Streisand
发布: 2025-02-01 07:56:08
原创
110 人浏览过

How Can I Retrieve a Class's Properties Using Reflection?

利用反射访问类属性

问题: 如何获取一个类所有属性的列表?

答案: 反射提供了解决此问题的方案。对于给定的实例,可以使用以下代码:

<code class="language-csharp">obj.GetType().GetProperties();</code>
登录后复制

要访问与类型关联的属性,请使用:

<code class="language-csharp">typeof(Foo).GetProperties();</code>
登录后复制

考虑以下示例类:

<code class="language-csharp">class Foo {
    public int A {get;set;}
    public string B {get;set;}
}</code>
登录后复制

要检索并显示其为新实例化的 Foo 对象的属性值:

<code class="language-csharp">Foo foo = new Foo {A = 1, B = "abc"};
foreach(var prop in foo.GetType().GetProperties()) {
    Console.WriteLine("{0}={1}", prop.Name, prop.GetValue(foo, null));
}</code>
登录后复制

其他注意事项:

  • 要检索静态属性值,请将 null 作为第一个参数传递给 GetValue。

  • 要包含非公共属性,请使用更细粒度的绑定标志,例如:

    <code class="language-csharp">  GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)</code>
    登录后复制

    这将检索所有公共和私有实例属性。

以上是如何使用反射检索班级的属性?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板