变量未声明或从未分配

时间:2015-10-30 09:37:24

标签: c# factory

我正在重构我的代码以实现多数据库工作。我使用System.Data.Common类和factory为当前选定的数据库引擎创建Exact对象。 Designed中的一些连接定义如下所示:

private System.Data.Common.DbConnection cn;

和分配是:

private void InitializeComponent()
{
...
    this.cn = SqlFactory.CreateConnection();
...
}

和SqlFactory代码如下所示:

public DbConnection getConnection()
{
    return (TSqlConection)Activator.CreateInstance(typeof(TSqlConection));
}

它在运行时可以正常工作,但是当我试图在VS Designer中打开任何表单时,我会遇到如下错误:

The variable 'cn' is either undeclared or was never assigned.

Designer无法显示表单进行编辑。

我该如何解决?

2 个答案:

答案 0 :(得分:2)

一般情况下,不应手动触摸InitializeComponent方法,一旦打开,表单设计器就会覆盖其内容。 Visual Studio通常会在* .Designer.cs中添加一个自动生成的注释。另外,我建议不要尝试在默认构造函数(没有参数的构造函数)中创建任何数据库连接,因为当您尝试在Designer中打开表单时,Visual Studio会调用它。

所以,你的选择是

  1. 使用参数为表单创建一个额外的构造函数,这个可以尝试初始化您的数据库连接。
  2. 使用表单的Load事件。
  3. 在表单中创建一个名为InitConnections的其他方法,此方法将执行必要的初始化。您可以在代码中的某个位置创建表单后立即调用它。

答案 1 :(得分:1)

从Designer.cs中删除this.cn = SqlFactory.CreateConnection();以及cn的所有内容。 在InitializeComponent();之后添加此部分。

现在您可以编辑表单,不会出现任何错误。