基类的非静态字段[字段名]:不能访问静态CONTEX
public class DatabaseBase
{
private readonly string connectionString;
private bool useCounters;
public DatabaseBase(string connectionString)
{
this.connectionString = connectionString;
}
public DatabaseBase(...)
{
connectionString = ...;
}
public DatabaseBase(..)
{
connectionString = string.Format(...);
}
public string ConnectionString
{
get { return this.connectionString; }
}
...
派生类:
public class ProjectDB : DatabaseBase
{
private bool useServiceConnection;
private static string ConnectionString
{
get
{
string connectionString = useServiceConnection == true ? ConfigurationManager.AppSettings["SomeConnection1"] : ConfigurationManager.AppSettings["SomeConnection2"];
return connectionString;
}
}
public ProjectDB() : this(false)
{
}
private bool isServiceCall;
public ProjectDB(bool useServiceConnection)
: base(ConnectionString)
{
this.useServiceConnection = useServiceConnection;
}
private SqlConnection CreateConnection()
{
return new SqlConnection(ConnectionString);
}
我得到错误“无法访问非静态字段useServiceConnection在静态上下文中“对于此行:
string connectionString = useServiceConnection == true ? ConfigurationManager.AppSettings["SomeConnection1"] : ConfigurationManager.AppSettings["SomeConnection2"];
但是,如果我做useServiceConnection静止无功满足quirement,然后我得到的是,这里的构造相同的错误:
public ProjectDB(bool useServiceConnection)
: base(ConnectionString)
{
this.useServiceConnection = useServiceConnection;
}
现在,如果我做useServiceConnection和ConnectionSting财产上的非静态的,然后我得到这个错误为构造函数在这里:
public LitleDB(bool useWebServiceConnection)
: base(ConnectionString)
{
this.useWebServiceConnection = useWebServiceConnection;
}
我认为我明白了第2个。
但是现在在下面更新的示例中,为什么在这种情况下构造函数仍会给我一个错误?那些不再是静态的,所以静态上下文应该从哪里来?所以这里是我现在有:
public class ProjectDB : DatabaseBase
{
private bool useServiceConnection; <-- NO LONGER STATIC
private new string ConnectionString <-- NO LONGER STATIC
{
get
{
string connectionString = useServiceConnection == true ? ConfigurationManager.AppSettings["SomeConnection1"] : ConfigurationManager.AppSettings["SomeConnection2"];
return connectionString;
}
}
public ProjectDB() : this(false)
{
}
private bool isServiceCall;
public ProjectDB(bool useServiceConnection)
: base(ConnectionString) <--- IT'S COMPLAINING HERE NOW, SO WHERE IS IT TRYING TO ACCESS STATICALLY? I DON'T GET WHY
{
this.useServiceConnection = useServiceConnection;
}
我有这个类的其他静态属性,这是否有什么关系呢?我虽然没有使用它们。
我更新了这篇文章。我现在了解了前两个,现在再看一遍。但最后一个问题是什么让我感到困扰。如果我将ConnectionString属性和useServiceConnection更改为实例成员,为什么当我尝试将ConnectionString传递到Base的构造函数时出现静态错误? – PositiveGuy 2009-10-02 21:43:50