2011-11-02 4 views
0

내 Form 클래스에서 내 Controller 클래스를 초기화하는 데 문제가 있습니다. 그것은 내 콘솔 응용 프로그램에서 잘 작동하지만 내 Form 응용 프로그램에서 사용할 때이 오류가 발생합니다.필드 이니셜 라이저는 양식의 컨트롤러를 사용하여 비 정적 필드, 메서드 또는 속성 'Adb.Form1.hanteraKund'을 참조 할 수 없습니다.

본인은 오류의 의미를 이해하고 있지만 해결 방법은 확실하지 않습니다.

이 내 폼 클래스의 시작 :

namespace Adb 
{ 
    public partial class Form1 : Form 
    { 
     private HanteraKund hanteraKund = new HanteraKund(); 
     Controller controller = new Controller(hanteraKund); 

내 컨트롤러 :

namespace Adb 
{ 
    class Controller 
    { 
     DBConnection Connection = new DBConnection(); 
     HanteraKund hanteraKund = new HanteraKund(); 

     public Controller (HanteraKund hanteraKund) 
     { 
      this.hanteraKund = hanteraKund; 
     } 

그리고 마지막으로 내 HanteraKund :

namespace Adb 
{ 
    class HanteraKund 
    { 
     DBConnection Connection = new DBConnection(); 
+0

가능한 복제본 [필드 초기화 프로그램이 비 정적 필드, 메서드 또는 속성을 참조 할 수 없습니까? ] (http://stackoverflow.com/questions/7400677/a-field-initializer-cannot-reference-the-non-static-field-method-or-property) –

답변

1

그냥 생성자 몸으로 초기화를 넣어 대신 :

public partial class Form1 : Form 
{ 
    private HanteraKund hanteraKund; 
    private Controller controller; 

    public Form1() 
    { 
     hanteraKund = new HanteraKund(); 
     controller = new Controller(hanteraKund); 
    } 
} 

(원하는 경우 변수 선언 지점에 hanteraKund을 초기화 할 수 있습니다. 중요한 점은 controller 초기화가 생성자 본문에 있어야한다는 것입니다. 그렇지 않으면 hanteraKund을 참조 할 수 없기 때문입니다.

+0

감사합니다. 매력처럼 작동했습니다! – user1025316