首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#:打印对象的所有属性

C#:打印对象的所有属性
EN

Stack Overflow用户
提问于 2009-05-12 10:53:05
回答 6查看 251.8K关注 0票数 217

.NET中是否有内置的方法可以将对象的所有属性等写入控制台?

当然可以使用反射,但我很好奇这是否已经exists...especially了,因为你可以在Visual Studio的即时窗口中做到这一点。在这里,您可以输入一个对象名称(在调试模式下),然后按enter,它就会非常漂亮地打印出来。

像这样的方法存在吗?

EN

回答 6

Stack Overflow用户

发布于 2009-05-12 11:33:01

您可以使用TypeDescriptor类来执行此操作:

代码语言:javascript
复制
foreach(PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj))
{
    string name = descriptor.Name;
    object value = descriptor.GetValue(obj);
    Console.WriteLine("{0}={1}", name, value);
}

TypeDescriptor位于System.ComponentModel命名空间中,是Visual Studio用来在其属性浏览器中显示对象的API。它最终是基于反射的(就像任何解决方案一样),但它提供了相当好的来自反射API的抽象级别。

票数 346
EN

Stack Overflow用户

发布于 2009-05-12 10:59:05

票数 29
EN

Stack Overflow用户

发布于 2009-05-12 11:12:34

下面的代码片段将完成所需的功能:

代码语言:javascript
复制
Type t = obj.GetType(); // Where obj is object whose properties you need.
PropertyInfo [] pi = t.GetProperties();
foreach (PropertyInfo p in pi)
{
    System.Console.WriteLine(p.Name + " : " + p.GetValue(obj));
}

我认为如果你把它写成扩展方法,你可以在所有类型的对象上使用它。

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

https://stackoverflow.com/questions/852181

复制
相关文章

相似问题

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