我怎么能得到在构造函数或变量值的所有变量的列表

本文关键字:变量 列表 变量值 怎么能 构造函数 | 更新日期: 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());