2017-02-11 1 views
-3

MongoDB C# 드라이버 2.4.2를 사용하여 일부 참조를 설정하려고 시도하지만 마지막 줄에 _db과 관련된 오류가 발생합니다. 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# 1 규격 10.4.5.2 Instance field initialization

에서 인스턴스 필드의 초기화 변수는 인스턴스가 생성되는 참조 할 수있다. 따라서 변수 이니셜 라이저에서 단순한 이름을 통해 참조 할 수있는 컴파일 타임 오류이기 때문에이를 변수 이니셜 라이저에서 참조하는 것은 컴파일 타임 오류입니다.

당신은 생성자에 모두 초기화를 이동할 수 있습니다, 또는 적어도 당신은 거기 _db 초기화 이동해야합니다 : 클래스에

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

나는 또한 고려할 것이라고 주입 client을하고 IOC의에 설정 - 읽기 책임을 이동 containter 구성.

관련 문제