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

时间:2020-06-06 23:25:10

标签: c# .net external

我对C#还是很陌生,我想知道是否有可能将部分代码(从主窗体移动到外部.cs文件(仍在相同的解决方案),并且可以从我的form1.cs文件中访问与我的原始form1.cs文件相同级别的变量和函数。

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

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

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中的代码在一个单独的文件中,但是仍然能够从Form3访问变量和控件,并且仍然可以访问Form3能够在外部文件(ExternalCode)中执行该方法。

我曾想过将此文件做成Form3.cs的女儿,但正如我所说,我在这方面还很新,所以我真的不知道该怎么做。

1 个答案:

答案 0 :(得分:3)

是的,这是可能的,因为该类已在此处声明为局部的:

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

此关键字意味着您从中获取代码的文件可以是多个文件之一,它们都声明了此类的部分内容。

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

  1. 将文件中的类声明为与原始文件属于同一命名空间
  2. 将内部的类声明为与原始类相同的类

请注意,您不必提及继承,例如原始文件中带有: 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,它仍然可以正常工作。

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