在C#中绕过多个继承

Aya*_*lam -2 c# multiple-inheritance

我在c#中创建一个表单,所以任何新表单都继承了类中构建的属性From我还创建了一个名为program的类,它启动了与我的数据库的连接我希望我的所有表单都继承它,因为我不想打开它每个表单的新连接我不能使用接口,因为程序包含main(),它创建一个连接我的程序类是

      class Program
      {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {

        MySqlConnection myConnection = new MySqlConnection("Server=instance2813231.db.xeround.com;Port=18422;Database=shares info;Uid=user;Pwd=password;");
        MySqlCommand command = myConnection.CreateCommand();

        try
        {

            myConnection.Open();
            MessageBox.Show("connected");


        }
        catch (Exception a)
        {
            Console.WriteLine(a.ToString());
            MessageBox.Show("Failed");
        }
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能绕过这个?

Jon*_*eet 6

我希望我的所有表格都能继承它

伙计,不.为了以非常糟糕的方式实现代码重用,这是滥用继承.

首先,尝试将GUI代码与数据库代码分开.

其次,赞成组合而不是继承 - 表单不是逻辑上的Program或"数据库连接开启者".它应该使用后者,但它不是一个.你应该有一个入口点,它实例化它需要的东西,然后开始运行.

第三,不要通过代码使用单个连接 - 而是根据需要打开和关闭连接,并让连接池处理效率方面.

因此,不是从类派生,而是为每个表单提供对数据库连接开启器实例的引用(如果你真的想要混合数据库和GUI代码...... ick),那么你的表单可以使用那个开启器.