【问题标题】:Is it possible to get the object from debug mode as string?是否可以从调试模式获取对象作为字符串?
【发布时间】:2014-02-12 15:51:00
【问题描述】:

为了测试一个类,我需要一些真实的虚拟对象。

我的问题是:在调试时,我可以得到一个已经构造的对象作为字符串吗?我想复制这个字符串并将其粘贴(分配)到测试类中的虚拟对象。

public class Employee
{
    public string Name;
    public int Age;
    public List<string> NamesOfChildren;
}

例如,对于调试模式下的此类实例,我需要一些字符串,例如

new Employee() {Name = "Serdar", Age = 30, NamesOfChildren = new List() {"NameOfChild1", "NameOfChild2"}}

换句话说,在调试模式下,我可以看到对象的所有公共和私有字段及其值。我可以将此数据作为字符串吗?我需要在编辑器中创建该对象的格式。 (当然只有公共领域)

【问题讨论】:

  • 我不明白你的意思
  • 您的问题不清楚:D 请尝试编辑并澄清您的问题:D 作为文本文件中的字符串?
  • serdar 的意思是,在运行时给定一个 .Net 对象,您是否可以自动创建 C# 代码来构造一个具有相似值的新对象。
  • @MattCruikshank thx,这正是我的意思

标签: c#


【解决方案1】:

我不确定私有字段,但我相信 Json.NET 可以帮助您。您将不得不添加对象名称,但我相信您可以轻松地自动执行此操作。

您可以使用 Nuget 安装它: 安装包 Newtonsoft.Json

您可以在以下位置找到更多信息:http://james.newtonking.com/json

这是他们网站的一个例子:

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };

string json = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "Expiry": "2008-12-28T00:00:00",
//  "Sizes": [
//    "Small"
//  ]
//}

反序列化对象也是如此:

string json = @"{
  'Name': 'Bad Boys',
  'ReleaseDate': '1995-4-7T00:00:00',
  'Genres': [
    'Action',
    'Comedy'
  ]
}";

Movie m = JsonConvert.DeserializeObject<Movie>(json);

string name = m.Name;
// Bad Boys

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多