相关疑难解决方法(0)

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

是否有一个内置于.NET的方法可以将所有属性和对象写入控制台?当然可以使用反射制作一个,但我很好奇,如果这已经存在...特别是因为你可以在立即窗口中的Visual Studio中完成它.在那里你可以有一个对象名称(在调试模式下),按回车键,并且它的所有内容都打印得非常漂亮.

这样的方法存在吗?

c# generics console object

172
推荐指数
6
解决办法
18万
查看次数

Visual Studio如何从调试器序列化对象

我正在尝试调查崩溃转储中的错误(因此我无法更改代码).我有一个非常复杂的对象(序列化表示中有数千行),并且它的状态不一致.要调查其状态,Visual Studio调试器视图是无用的.但该对象有一个数据契约.我想序列化它,然后使用我喜欢的文本编辑器浏览对象.是否可以从调试器中执行此操作?

c# visual-studio-2012

75
推荐指数
6
解决办法
3万
查看次数

对象转储程序类

我正在寻找一个可以输出对象及其所有叶值的类,其格式类似于:

User
  - Name: Gordon
  - Age : 60
  - WorkAddress
     - Street: 10 Downing Street
     - Town: London
     - Country: UK
  - HomeAddresses[0]
    ...
  - HomeAddresses[1]
    ...
Run Code Online (Sandbox Code Playgroud)

(或更清晰的格式).这相当于:

public class User
{
    public string Name { get;set; }
    public int Age { get;set; }
    public Address WorkAddress { get;set; }
    public List<Address> HomeAddresses { get;set; }
}

public class Address
{
    public string Street { get;set; }
    public string Town { get;set; }
    public string Country { get;set; } …
Run Code Online (Sandbox Code Playgroud)

c# object-dumper

50
推荐指数
8
解决办法
5万
查看次数

是否有System.Diagnostics.Debug类的TextWriter接口?

我经常对System.Diagnostics.Debug.Write/WriteLine方法感到沮丧.我想使用TextWriter类中熟悉的Write/WriteLine方法,所以我经常写

Debug.WriteLine("# entries {0} for connection {1}", countOfEntries, connection);
Run Code Online (Sandbox Code Playgroud)

这会导致编译器错误.我最终写作了

Debug.WriteLine(string.Format("# entries {0} for connection {1}", 
    countOfEntries, connection));
Run Code Online (Sandbox Code Playgroud)

这真的很尴尬.

CLR是否有一个派生自TextWriter的类"包装"System.Debug,还是应该自己滚动?

.net c#

29
推荐指数
3
解决办法
6586
查看次数

获取对象的完整字符串表示形式(如在Visual Studio中的立即窗口中)

给出以下示例类:

public class MyClass
{
    public string S { get; set; }
    public int I { get; set; }
    public DateTime D { get; set; }
    private float F { get; set; }
    private long l;

    public MyClass()
    {
        S = "foo";
        I = 42;
        D = new DateTime(2011, 11, 11);
        F = 3.14f;
        l = 12435;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在我的应用程序中有myClass这个类的实例,请在调试模式(Visual Studio 2010)中逐步执行代码,并在某些时候将myClass类型转换为立即窗口,将显示以下内容:

{MyClass}
    D: {11.11.2011 00:00:00}
    F: 3.14
    I: 42
    l: 12435
    S: "foo"
Run Code Online (Sandbox Code Playgroud)

获取对象及其所有值的字符串表示形式对于日志记录非常有用.有没有一个很好的方法来实现这一目标?

我猜立即窗口使用反射来循环所有字段和属性,但我想我会问,以防万一已存在一些效用函数或任何事情.

.net c# debugging logging

13
推荐指数
1
解决办法
5252
查看次数

将json反序列化为匿名类型列表

我有一个json如下:

  "[{"a":"b","c":"d"},{"a":"e","c":"f"},{"a":"g","c":"h"}]"
Run Code Online (Sandbox Code Playgroud)

现在我想把它变成匿名类型"foo"的对象列表

  var foo=new { a=string.empty , c=string.empty };
Run Code Online (Sandbox Code Playgroud)

代码是:

  ServiceStackJsonSerializer Jserializer = new ServiceStackJsonSerializer();
  dynamic foos = Jserializer.Deserialize<List<foo.GetType()>>(jsonString);
Run Code Online (Sandbox Code Playgroud)

但没有工作.

更新:

更换ServiceStackJavascriptSerializer和传球dictionary[]来解决,而不需要将问题anonymous类型

        JavaScriptSerializer jSerializer = new JavaScriptSerializer();
        var Foos = jSerializer.Deserialize<Dictionary<string, object>[]>(jsonString);
Run Code Online (Sandbox Code Playgroud)

asp.net json anonymous-types servicestack

6
推荐指数
1
解决办法
4828
查看次数

C#如何输出一个类中的所有项目(结构)

我上课基本上只是一排桌子。该行包含许多列。

出于测试目的,我需要输出我得到的读数。

所以我需要输出行中的所有列。

班级就像

    public class tableRow
    {
        public tableRow()
        {}
    public string id
    public string name
    public string reg
    public string data1
    ....
    ....
    ....
   <lot more columns>

}  
Run Code Online (Sandbox Code Playgroud)

然后我需要这样写:

Console.WriteLine("id: " + tableRow.id);
Console.WriteLine("name: " + tableRow.name);
Console.WriteLine("reg: " + tableRow.reg);
Console.WriteLine("data1: " + tableRow.data1);
...
...
...
<lot more Console.WriteLine>
Run Code Online (Sandbox Code Playgroud)

所以我想知道,有没有一种简单的方法来获得所有这些输出,而没有这么多的 console.writeLine?

谢谢

c# struct class output

2
推荐指数
2
解决办法
1万
查看次数

尝试通过序列化为JSON打印对象时,为什么有些成员丢失?

如何在C#中打印任意变量以便打印所有成员?

我用相同的技术找到了三个答案:

但是,当我尝试使用以下代码时,

using System;
using System.Collections.Generic;

using Newtonsoft.Json;

public static class Program
{
    public static void Main()
    {
        Test t1 = new Test(1, 2);
        {
            string json = JsonConvert.SerializeObject(t1, Formatting.Indented);
            Console.WriteLine(json);
        }
        Dump(t1);

        // Add 3 objects to a List.
        List<Test> list = new List<Test>();
        list.Add(new Test(1, 2));
        list.Add(new Test(3, 4));
        list.Add(new Test(5, 6));

        Console.WriteLine(list.ToString());
        {
            string json = JsonConvert.SerializeObject(list, Formatting.Indented);
            Console.WriteLine(json);
        }
    }

    public class Test
    {
        int A;
        int b;
        public Test(int …
Run Code Online (Sandbox Code Playgroud)

c# json json.net

2
推荐指数
1
解决办法
599
查看次数