Jul*_*ian 13 .net c# debugging logging
给出以下示例类:
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)
获取对象及其所有值的字符串表示形式对于日志记录非常有用.有没有一个很好的方法来实现这一目标?
我猜立即窗口使用反射来循环所有字段和属性,但我想我会问,以防万一已存在一些效用函数或任何事情.
Gra*_*ICA 12
这将把所有字段存储在字典中(确保它们可以先读取):
public static Dictionary<string, object> GeneratePropertiesDictionary(object myClass)
{
return myClass.GetType()
.GetProperties()
.Where(p => p.CanRead)
.ToDictionary(p => p.Name, p => p.GetValue(myClass, null));
}
Run Code Online (Sandbox Code Playgroud)
您可以轻松地修改它以将每个名称/值附加到StringBuilder对象而不是字典,然后将其转储到文件中.
| 归档时间: |
|
| 查看次数: |
5252 次 |
| 最近记录: |