【问题标题】:The variable is either undeclared or was never assigned变量未声明或从未赋值
【发布时间】:2016-01-30 16:33:26
【问题描述】:

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

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    所以,你的选择是

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

    【讨论】:

      猜你喜欢
      • 2012-01-21
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 2023-03-13
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多