基類的非靜態字段[字段名]:不能訪問靜態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