我有一个文本框,我想以人类可读的方式在其中显示一个C#对象,仅用于调试原因.如果可能,我不想使用外部库.我该怎么做呢?
Ric*_*ard 95
如果您使用Json,那么我建议使用Newtonsofts Json库,然后您可以用Json表示法输出整个对象,它将使用间距和换行符对其进行格式化.我们使用它来轻松显示复杂对象以进行调试:
var jsonString = JsonConvert.SerializeObject(
property, Formatting.Indented,
new JsonConverter[] {new StringEnumConverter()});
Run Code Online (Sandbox Code Playgroud)
这里我还使用了String Enum转换器,以便将Enums显示为字符串表示而不是整数.
该库可通过NuGet以Json.Net或Newtonsoft Json的形式获得
或者你可以在这里得到它:
http://james.newtonking.com/pages/json-net.aspx
vt1*_*100 23
如果它仅用于调试目的,请使用DebuggerDisplayAttribute.
使用此属性将更改对象在监视窗口的"值"部分中的外观(或者在调试期间将鼠标悬停在其上)
用法:
[DebuggerDisplay("Name = {FirstName} {LastName}")]
public class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Ili*_*a G 21
将其序列化为JSON.它可以ToString()
像其他人建议的那样在方法中完成,但是如果您打算仅使用它进行调试,我认为这不合适.
小智 7
这对我来说非常有效:
string SerilizedText = "";
RootClass myclass= new Root RootClass ();
SerilizedText = JsonConvert.SerializeObject(myclass,Newtonsoft.Json.Formatting.Indented) ;
Run Code Online (Sandbox Code Playgroud)