2013-05-07 39 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