2015-01-02 2 views
0

라이브러리 관리 응용 프로그램을 만들려고합니다. 하지만 시작 단계에서 나는 "필드 이니셜 라이저가 'ProjectRI.ClassesAndInterfaces.StudentClass.x'비 정적 필드, 메소드 또는 속성을 참조 할 수 없습니다."C# 오류 : 필드 초기화 프로그램이 비 정적 필드, 메서드 또는 속성을 참조 할 수 없습니다.

'DbClass'라는 클래스가 있습니다.

class DBclass 
{ 
    private static String conString = @"server=localhost;user id=root;persistsecurityinfo=True;database=royalinstitute"; 

    public String ConString 
    { 
     get { return conString; } 
     set { conString = value; } 
    } 
} 

내 연결이 'DbClass'에서 문자열, 그래서 쉽게 변경할 수 있습니다 또한 conString 변수는 객체를 생성하여 바로 사용할 수 있습니다 .. 그리고 필드 캡슐화된다.

다른 클래스에는 'StudentClass'가 있습니다.

class StudentClass 
{ 
    DBclass x = new DBclass(); 
    MySqlConnection conn = new MySqlConnection(x.ConString); 

    public void add() 
    { 
    } 

    public void update() 
    { 
    } 

    public void remove() 
    { 
    } 
} 

이 StudentClass의 오류입니다. 즉, 개체 'x'를 생성하여 'DbClass'의 'conString'필드에 액세스 할 수 없습니다.

MySqlConnection conn = new MySqlConnection (x.ConString);

오류는이 문제를 해결하기 위해 도와주세요

"오류 1 필드 이니셜 라이저는 비 정적 필드, 메서드 또는 속성을 참조 할 수 없습니다", 라인 위에 ..

+0

할 수 없습니다 그. 생성자를 사용해야합니다. –

+0

http://stackoverflow.com/questions/14439231/a-field-initializer-cannot-reference-the-nonstatic-field-method-or-property –

+0

http://stackoverflow.com/questions/15204420/a-field -initializer-non-static-field-method-or-property를 참조 할 수 없습니다. –

답변

0

만들기 기능 정적 속성 :와

public static String ConString 
{ 
    get { return conString; } 
    set { conString = value; } 
} 

사용을 : 당신이 MySqlConnection conn = new MySqlConnection(DBClass.ConString);

+0

나는 이것을 시도한 다음 새로운 오류 "오류 : 이름 'DbClass'이 (가) 현재 컨텍스트에 존재하지 않습니다." –

+0

유형 오류가 발생했습니다. 다시 시도해보십시오. – Sievajet

+0

감사합니다. 작동했습니다. .. 하지만 이것은 내가 예상 한 답변이 아니며 'ConString'속성을 사용하여 캡슐화 된 'conString'필드에 액세스하려고합니다. –

0
class StudentClass 
{ 
    DBclass x = new DBclass(); 
    MySqlConnection conn= null; 

    public StudentClass() 
    { 
     conn = new MySqlConnection(x.ConString); 
    } 

    public void add() 
    { 
    } 

    public void update() 
    { 
    } 

    public void remove() 
    { 
    } 
} 
관련 문제