2017-02-11 65 views
-3

使用MongoDB C#驅動程序2.4.2,嘗試建立一些引用,但得到關於_db的最後一行的err。MongoDB .GetDatabase產生「字段初始值設定項不能引用非靜態字段,方法或屬性」

「A字段初始不能引用非靜態字段,方法或屬性CurrentClassName._client」

不能弄清楚。

代碼:

public class MongoDatabase<T> : ImyDB<T> where T : class, new() 
{ 
private static string _connectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString; 
private string _dbName; 
private MongoClient _client = new MongoClient(_connectionString); 
private IMongoDatabase _db = _client.GetDatabase(_dbName); 

回答

1

您在_db場的初始化引用_client場。從C#規範10.4.5.2 Instance field initialization

爲實例字段變量初始值不能引用被創建的 實例。因此,在變量初始值設定項中引用它是編譯時錯誤,因爲變量初始值設定項通過簡單名稱引用任何實例成員的編譯時錯誤。

你既可以初始化移到構造函數,或者至少你應該將_db初始化有:

public MongoDatabase() 
{ 
    _client = new MongoClient(_connectionString); 
    _db = _client.GetDatabase(_dbName); 
} 

我也會考慮注入client到類和移動配置讀責任你的IoC包含器配置。

相關問題