Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio visual studio的即时窗口如何打印对象的所有成员?_Visual Studio_Debugging_Immediate Window - Fatal编程技术网

Visual studio visual studio的即时窗口如何打印对象的所有成员?

Visual studio visual studio的即时窗口如何打印对象的所有成员?,visual-studio,debugging,immediate-window,Visual Studio,Debugging,Immediate Window,如何使用输出窗口写入对象的所有成员?Trace.WriteLine使用方法ToString,不输出所有成员。是否有API可以在不编写自己的代码的情况下执行此操作?它可能通过反射遍历成员。它可能通过反射遍历成员。调用特定对象上的ToString()方法,如果该方法已被重写以显示所有成员,则可以。但是,并非所有对象都实现了它们的ToString()方法,在这种情况下,该方法返回对象类型信息 与其调用ToString(),不如编写一个使用的自定义函数,并将其输出 编辑:此函数将返回给定对象的属性、添加

如何使用输出窗口写入对象的所有成员?Trace.WriteLine使用方法ToString,不输出所有成员。是否有API可以在不编写自己的代码的情况下执行此操作?

它可能通过反射遍历成员。

它可能通过反射遍历成员。

调用特定对象上的ToString()方法,如果该方法已被重写以显示所有成员,则可以。但是,并非所有对象都实现了它们的ToString()方法,在这种情况下,该方法返回对象类型信息

与其调用ToString(),不如编写一个使用的自定义函数,并将其输出

编辑:此函数将返回给定对象的属性、添加方法、事件以及所需的所有其他内容。(在VB中,此工作PC上没有C#)

调用特定对象上的ToString()方法,如果该方法已被重写以显示所有成员,则可以。但是,并非所有对象都实现了它们的ToString()方法,在这种情况下,该方法返回对象类型信息

与其调用ToString(),不如编写一个使用的自定义函数,并将其输出

编辑:此函数将返回给定对象的属性、添加方法、事件以及所需的所有其他内容。(在VB中,此工作PC上没有C#)


您可以这样做:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;

 namespace ConsoleApplication2
 {
     class Program
     {
         static void Main(string[] args)
         {
             var m = new MyClass { AString = "somestring", AnInt = 60 };

             Console.WriteLine(GetObjectInfo(m));

             Console.ReadLine();
         }

         private static string GetObjectInfo(object o)
         {
             var result = new StringBuilder();

             var t = o.GetType();

             result.AppendFormat("Type: {0}\n", t.Name);

             t.GetProperties().ToList().ForEach(pi => result.AppendFormat("{0} = {1}\n", pi.Name, pi.GetValue(o, null).ToString()));

             return result.ToString();
         }
     }

     public class MyClass
     {
         public string AString { get; set; }
         public int AnInt { get; set; }
     }
}    

您可以这样做:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;

 namespace ConsoleApplication2
 {
     class Program
     {
         static void Main(string[] args)
         {
             var m = new MyClass { AString = "somestring", AnInt = 60 };

             Console.WriteLine(GetObjectInfo(m));

             Console.ReadLine();
         }

         private static string GetObjectInfo(object o)
         {
             var result = new StringBuilder();

             var t = o.GetType();

             result.AppendFormat("Type: {0}\n", t.Name);

             t.GetProperties().ToList().ForEach(pi => result.AppendFormat("{0} = {1}\n", pi.Name, pi.GetValue(o, null).ToString()));

             return result.ToString();
         }
     }

     public class MyClass
     {
         public string AString { get; set; }
         public int AnInt { get; set; }
     }
}    

不,不。我试图输出的类没有覆盖到字符串,我不想编写它。但即时窗口会以某种方式打印所有内容。我在寻找那种神奇的方法。这里没有神奇的方法。VS只是通过反思给成员打电话或评估;VS使用框架的反射,您也可以这样做。查看代码编辑。抱歉,我没有向上滚动,看到了添加在广告上方的代码。哦。好消息,克劳斯比斯科夫;)不,不。我试图输出的类没有覆盖到字符串,我不想编写它。但即时窗口会以某种方式打印所有内容。我在寻找那种神奇的方法。这里没有神奇的方法。VS只是通过反思给成员打电话或评估;VS使用框架的反射,您也可以这样做。查看代码编辑。抱歉,我没有向上滚动,看到了添加在广告上方的代码。哦。好消息,克劳斯比斯科夫;)谢谢如果我找不到API,我可能会使用你的代码。谢谢。如果我找不到API,我可能会使用您的代码。