C# 如何在2类上声明变量
我有两个这样的类试图连接到mysql 这两个类有相同的方法有些不一样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
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块内部设置它。