Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在2类上声明变量_C#_Winforms - Fatal编程技术网

C# 如何在2类上声明变量

C# 如何在2类上声明变量,c#,winforms,C#,Winforms,我有两个这样的类试图连接到mysql 这两个类有相同的方法有些不一样 if (isRemote) { RemoteMySQL mySql = new RemoteMySQL(); } else { MySQL mySql = new MySQL(); } mySql.Connect(); 当我像这样声明mySql时mySql.Connect()is错误在当前上下文中不存在。我将在您的案例中使用Factory设计模式。代码将类似于 public interface IMy

我有两个这样的类试图连接到mysql

这两个类有相同的方法有些不一样

if (isRemote)
{
    RemoteMySQL mySql = new RemoteMySQL();
}
else
{
    MySQL mySql = new MySQL();
}
mySql.Connect();

当我像这样声明
mySql
mySql.Connect()is错误在当前上下文中不存在。

我将在您的案例中使用Factory设计模式。代码将类似于

    public interface IMySql
    {
        void Connect();
    }
    class RemoteMySQL : IMySql
    {
        public void Connect()
        {}
    }

    class MySQL : IMySql
    {
        public void Connect()
        { }
    }
在Factory.cs中

public IMySql Factory(bool isremote)
        {

            if (isremote)
                return new RemoteMySQL();

            else
                return new MySQL();
        }
因此,当您想要使用工厂时,您可以使用以下代码:

var mysql = Factory(true);// remote case
mysql.Connect()

我将在你的案例中使用工厂设计模式。代码将类似于

    public interface IMySql
    {
        void Connect();
    }
    class RemoteMySQL : IMySql
    {
        public void Connect()
        {}
    }

    class MySQL : IMySql
    {
        public void Connect()
        { }
    }
在Factory.cs中

public IMySql Factory(bool isremote)
        {

            if (isremote)
                return new RemoteMySQL();

            else
                return new MySQL();
        }
因此,当您想要使用工厂时,您可以使用以下代码:

var mysql = Factory(true);// remote case
mysql.Connect()

是的,mySql在您使用它的上下文中不存在。您正在大括号内定义它们,因此在这些大括号外,它们无法识别。如果继承不是一个选项,您也可以定义一个接口,例如使用Connect方法的IConnectable,并让这两个类实现此接口。通过这种方式,您可以在if块外部声明一个类型为IConnectable的变量,并将其设置在if或else块内部。是的,mySql在您使用它的上下文中不存在。您正在大括号内定义它们,因此在这些大括号外,它们无法识别。如果继承不是一个选项,您也可以定义一个接口,例如使用Connect方法的IConnectable,并让这两个类实现此接口。这样,您就可以在if块外部声明一个类型为IConnectable的变量,并在if或else块内部设置它。