1

我在 web.config 中添加了一个连接字符串。我做了一个字符串调用它的类-

namespace WebApplication1.Classes
{
    public class Connections
    {
        public string DBConn = 
            ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;
    }
}

现在,从我的 default.aspx.cs 页面中,我想调用这个 DBConn,以便可以在该页面中使用它。

 namespace WebApplication1
 {
     public partial class _Default : System.Web.UI.Page
     {
         protected void Page_Load(object sender, EventArgs e)
         {
             Console.WriteLine(Classes.Connections.DBConn);
         }
     }
 }

Classes.Connections.DBConn不工作。这是我得到的错误。

非静态字段、方法或属性“WebApplication1.Classes.Connections.DBConn”需要对象引用

我究竟做错了什么?

4

8 回答 8

3

你的领域不是static。为了这样称呼它:

Classes.Connections.DBConn // Using the class Connections, 
                           // not an instance of the class Connections

您必须像这样声明该字段:

public static string DBConn = "etc";

对于这样的类,您可能应该将整个类声明为static事实上。有关更多信息,请查看这篇文章

于 2012-05-04T19:41:43.180 回答
1

为了使用没有实例的变量,它必须声明为静态的。在此处阅读有关 static 关键字的更多信息。

如果你的类也没有理由被实例化,你应该将类和变量都标记为静态:

namespace WebApplication1.Classes 
{ 
 public static class Connections 
 { 
   public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString; 
 } 
}

DBConn 变量上的静态变量允许从类本身访问它(即,没有实例)。Connections 类上的 static 会阻止该类被实例化,因为没有理由这样做。

于 2012-05-04T19:44:51.463 回答
1

你可以做两件事:

1)实例你的类

Connections c = new Connections();

然后使用c.DbConn

2)使方法静态

  namespace WebApplication1.Classes
  {
    public class Connections
    {
      public static string DBConn = 
          ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;
    }
  }
于 2012-05-04T19:46:05.867 回答
1

要修复,几乎只需按照错误消息将其设为静态即可:

public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;

由于此表达式Classes.Connections.DBConn是静态引用(您没有 的实例Connectinos),因此如果您想以这种方式访问​​它,则需要将其设为静态。

于 2012-05-04T19:41:10.090 回答
1

尝试

public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;  }

它不可见的原因是因为你必须做到static

于 2012-05-04T19:41:41.277 回答
1

要在当前编写类时访问连接字符串,请执行以下操作:

using WebApplication1.Classes;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Console.WriteLine(new Connections().DBConn);
        }
    }
}

为应用程序范围的设置创建一个static类是一种被广泛接受的做法 - 类似于所示的其他示例。

于 2012-05-04T19:43:06.983 回答
1

您需要使用静态关键字。

namespace WebApplication1.Classes
{
 public static class Connections
 {
   public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;
 }
}
于 2012-05-04T19:42:19.957 回答
1

由于您的变量不是静态的,因此您需要像这样实例化类 Connections:

Connections x = new Connections();

然后你就可以通过

x.DBConn

其他解决方案是使您的变量静态

public static string DBConn=...
于 2012-05-04T19:42:37.183 回答