我怎么能得到在构造函数或变量值的所有变量的列表
本文关键字:变量 列表 变量值 怎么能 构造函数 | 更新日期: 2023-09-27 18:04:03
例如,我在构造函数中这样做:
countDown = 0;
Client.CachePolicy = policy;
SatelliteClient.CachePolicy = policy;
btn8 = new Button();
btn8 = button8;
timer11 = new System.Windows.Forms.Timer();
timer11.Interval = 1000;
timer11.Enabled = false;
timer11.Tick += new EventHandler(timer11_Tick);
automaticDoubleClick = false;
this.MouseWheel += new MouseEventHandler(Form1_MouseWheel);
label18.Visible = false;
filesSizeButtonSwitch = false;
filesSizeDemoMode = false;
paintDemoButtonSwitch = false;
paintDemoMode = false;
debugButtonSwitch = false;
debugMode = false;
timerdelay = 0;
这只是构造函数中的一小部分。我也有一个记录器,我这样使用记录器:
Logger.Write("test");
我想要的是输入Logger。为每个变量值写入一些循环,它将自动遍历所有变量,获取值并将它们自动写入Logger。例如:
Logger.Write(variables[i].ToString());
就像这样。
有办法吗?我用的是WinForms Application
为当前框架创建一个StackFrame
对象,调用GetMethod
以获取当前方法的MethodInfo
对象,调用其GetMethodBody
方法以获取MethodBody
对象,然后使用LocalVariables
属性。我不知道所有的细节,因为我自己从来没有做过,但这是你应该开始看的地方。
更新:我进一步调查了一下,看起来我的建议不会有帮助,因为LocalVariables
集合中的LocalVariableInfo
对象包含有关局部变量的数据,但不是它们的值或获取它们值的方法。
一个简单的想法是在类中添加新方法,其中指定了构造函数中使用的每个变量。这不是自动的,但可以工作:
private string GetVariables()
{
StringBuilder sb = new StringBuilder();
sb.Append("timer11 = " + this.timer11.Interval.ToString() + "'n");
sb.Append("timer11 = " + this.timer11.Enabled.ToString() + "'n");
sb.Append("automaticDoubleClick = " + this.automaticDoubleClick.ToString() + "'n");
sb.Append("label18.Visible = " + this.label18.Visible);
// Add all needed variables ->
return sb.ToString();
}
例如,你可以在你的对象中使用Logger,如下所示:
Logger.Write(this.GetVariables());
或外:
Logger.Write(YourObject.GetVariables());