2013-05-07 58 views
0

我想建議有關c#,windows窗體和團結IoC框架的架構決定。在統一背景下保持形式是一個好主意嗎?或者應該將服務層和下面的圖層保留在其中?在這裏就像「依賴」在一起(類似於春天的東西取決於何時豆彼此依賴)。提前致謝。C#windowsforms和統一ioc

回答

2

通常,您應該嘗試讓您的DI框架爲您構建完整的對象圖。

但是,對於Windows窗體,Form類應該有一個默認構造函數,因爲平臺會爲您創建這些類型。這意味着你將不得不求助於其他機制來構建這些類。

這同樣適用於Windows窗體。與ASP.NET Web Forms相比,Windows Forms does not require forms to have a default constructor。因此,允許容器爲您構建包含表單的完整對象圖是一種很好的做法,因爲這樣可以驗證整個對象圖,並防止表示層依賴於DI框架。這意味着您應該在您的表單中使用構造函數注入:

public MainForm : Form 
{ 
    private readonly ILogger logger; 

    public MainForm(ILogger Logger) 
    { 
     this.logger = logger; 
    } 
} 
+0

感謝您的回答。我做了一個像概念一樣的概念,表單是上下文的一部分,每當我需要一個表單時,我都可以通過服務來訪問它,並將其從容器中取出。容器創建實例並連接所有資源。這種方法允許我將生命週期管理留給框架(如單身人士等)。我認爲這也是好的,不是嗎?你有這種方法的經驗嗎?似乎工作正常,但我不確定,我們是否不會遇到使用此概念的一些問題。 – 2013-05-07 10:18:53

+0

我不知道你是如何設法將表單的創建委託給容器的,但是如果可行的話,它應該沒問題。 – Steven 2013-05-07 11:03:45