变量未声明或从未分配

问题描述 投票:1回答:2

我正在重构代码以实现多数据库工作。我使用System.Data.Common类和工厂为当前选择的数据库引擎创建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无法显示要编辑的表单。

我该如何解决?

c# factory
2个回答
1
投票

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

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


2
投票

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

所以,您的选择是

  1. 为您的表单创建一个额外的带有参数的构造函数,这个可以尝试初始化您的数据库连接。
  2. 使用表单的Load事件。
  3. [以表格的形式创建一个名为InitConnections的附加方法,该方法将执行必要的初始化。您可以在代码中的某个位置创建表单后立即调用它。
© www.soinside.com 2019 - 2024. All rights reserved.