2017-02-11 66 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包含器配置。

相关问题