来自外部文件的 C# .NET 运行 代码

C# .NET running code from an external file

我是 C# 的新手,我想知道是否可以将部分代码(从我的主表单)移动到外部 .cs 文件( 仍然在同一个解决方案中),对我的 form1.cs 文件中的变量和函数的访问级别与我原来的 form1.cs 文件相同。

我正在使用最新版本的 .NET 框架,我没有其他(外部)代码参考。

这是我正在寻找的一个简单示例:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Code1
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
        
        // variables
        text1 = "Hello"
        
        public void ExternalCode()
        {
            this.BackgroundImage = null;
            Btn1.Text = "Click me";
            Lbl1.Text = text1;
        }

        private void Btn1_Click(object sender, EventArgs e)
        {
            ExternalCode();
        }
    }
}

这个表单只有一个名为“Btn1”的按钮和一个名为“Lbl1”的标签。

我希望方法 SeparateCode 中的代码位于单独的文件中,但仍然能够从 Form3Form3 访问变量和控件仍然能够执行外部文件中的方法 (ExternalCode).

我想过将此文件设为 Form3.cs 的子文件,但正如我所说,我对此还是很陌生,所以我真的不知道该怎么做。

是的,这是可能的,因为 class 已被声明为部分,这里:

       v-----v
public partial class Form3 : Form

此关键字表示您从中获取该代码的文件可以是众多文件之一,所有文件都为此 class 声明了自己的部分内容。

所以您可以做的是将另一个文件添加到您的项目中,并确保它有助于此 class。为此,您必须:

  1. 在文件中声明 class 与原始文件属于同一命名空间
  2. 将里面的class声明为和原来的class一样

请注意,您不必提及继承,例如原始文件中带有 : Form 的部分,因为这仍然可以从原始文件中理解。

因此,如果您添加包含以下内容的文件:

namespace Code1                        // <-- this has to be the same
{
    public partial class Form3         // <-- as does this
    {
        public void ExternalCode()
        {
            this.BackgroundImage = null;
            Btn1.Text = "Click me";
            Lbl1.Text = text1;
        }
    }
}

然后您可以从原始文件中删除 ExternalCode,它应该仍然可以正常工作。

编译器会将所有这些文件视为构建相同的一个,class,Form3