2012-02-09 66 views
1

我有一個winform用戶控件。在構造函數中,我實例化了一個依賴項。它是這樣瞭解winform控件的狀態

public IProvider provider {get;set;} 

public MyUserControl() 
{ 
    InitializeComponent(); 
    provider = new MockProvider();//for testing. Will pass into constructor eventually 
} 

private void MyUserControl_Load(object sender, EventArgs e) 
{ 
    SomeModel model = new SomeModel(provider);//provider is null 
    //do work 
    model.InsertIntoDb(); 
} 

我認爲會員國堅持,直到顯式調用Form.Close()。那麼爲什麼在Load事件中提供者對象爲null?

+0

如何加載控件? – 2012-02-09 14:22:29

+0

@Shadow Wizard - 我在設計視圖中將它放到窗體上。窗體的InitializeComponent()實例化用戶控件。 – 2012-02-09 14:23:53

+0

我相信設計視圖不會創建實例..不確定。運行時錯誤是否也會發生? – 2012-02-09 15:05:47

回答

0

InitializeComponent()在「父」形式(實例化用戶控件的形式)中設置了Provider = null。非常好地證明了winforms don't support無參數構造函數。

0

這應該有效。確保new關鍵字在控件的構造函數中,並且某個地方正在實例化該控件。

確保在第二個函數之前調用新函數。也許這是另一回事。國家應該堅持下去。

+0

第二個函數是Load事件。構造函數確實會在任何對象事件之前調用。 – 2012-02-09 14:22:47