inversion-of-control相关内容

在依赖注入的背景下,什么是复合根?

我正在研究依赖项注入,并且整个地方都使用术语 composition root 。那是什么呢? 解决方案 组合根是应用程序中单个位置,其中应用程序的对象图构成使用依赖项注入容器进行操作(尽管无关紧要,但是可以使用容器,也可以使用 应该只有一个地方发生这种情况,并且您的容器不需要 引用以下链接之一的答案: 实际上,这意味着您 应该在应用程序的 根目录下配置容器。 ..
发布时间:2020-10-20 19:29:38 其他开发

使用Unity的构造函数中使用的属性依赖注入

好吧,我在基类中定义了一个从属属性,并且我试图在其派生类的构造函数中使用它,但这不起作用,该属性显示为null。用container.Resolve();解析实例后,Unity解析从属属性。 我可以选择的另一种方法是将IUnityContainer参数添加到MyViewModel类构造函数中,并将ILogger属性设置为以下形式: public MyViewModel(IUnityC ..

在WPF应用程序中的哪里放置和配置IoC容器?

我正在开发一个中型WPF应用程序(MVVM),该应用程序将来应该可以扩展和维护。因此,我决定使用IoC容器(在这种情况下为Unity)保持灵活性。 但是我不确定在WPF应用程序中将Unity放置和配置的位置。 我想容器应该是可全局访问的,因此它应该转到Application类。但是我应该将其设置为静态属性吗?我应该在Application_Startup()事件处理程序中配置它吗? ..

IoC之上的抽象工厂模式?

我决定在更大的项目中使用IoC原则。但是,我想弄清楚困扰我很长一段时间的事情。我得出的结论是,IoC容器是一种架构模式,而不是一种设计模式。换句话说,没有一个类应该知道它的存在,并且应该在应用程序层使用容器本身来缝合所有组件。从本质上讲,它是在精心设计的面向对象模型之上的一种选择。 话虽如此,如何在不向各处散布IoC容器的情况下访问已解析的类型(无论是否抽象)?我在这里看到的唯一选择是利用抽象工 ..
发布时间:2020-10-08 20:42:53 其他开发

这是“ Bastard注入反模式”的一个好例子吗?

我看到主要的开发人员正在编写这样的代码,并阅读Mark Seemann的书“。NET中的依赖注入” 。我想知道特定的“新”是否是“外国”,因此是“混混注入”。 “ ?? 公共类SessionInitServiceManager { 受保护的只读ICESTraceManager _traceManager; 受保护的只读ILogger _logger; 受保护的只读IAggregate ..
发布时间:2020-10-08 19:13:44 C#/.NET

WPF MDI应用程序中的组合根在哪里?

在传统的MDI应用程序中,当发生命令(例如,按下功能区按钮)时,将创建一些对象(窗体),因此它可能是一个合成点。我对此类应用程序中的合成根感到困惑。我读过某个地方,我们可以使用 ViewModelLocator ,它类似于 Service Locator 模式。如您所知,某些人谴责了服务定位器模式。 现在,请就此问题向我提出建议。 谢谢。 解决方案 ViewModelLocat ..

F#中的应用程序架构/组成

最近,我一直在C#中将SOLID进行到相当极端的水平,并且在某个时候意识到,除了如今编写函数之外,我基本上没有做其他事情。在我最近再次开始研究F#之后,我发现对于我现在正在做的大部分事情来说,这可能是更合适的语言选择,因此我想尝试将一个实际的C#项目移植到F#中作为概念证明。我想我可以(以一种非常惯用的方式)发布实际的代码,但是我无法想象这样的架构会像我在C#中一样灵活地工作。 我的意思是, ..
发布时间:2020-10-07 02:03:27 其他开发

弹簧设置库

我的许多应用程序属性由数据库提供,我想通过存储库注入它们。我想知道春天是否可行。如果有人可以提出解决方案,我会很高兴。我正在考虑的代码看起来像这样: @Component 公共类ExampleService实现Service { private PlatformSetting setting1; @Required @Qualifier(“ setting1”) pu ..

温莎城堡IoC属性注入。在ChildClass构造函数中使用BaseClass的属性

我有以下基类 公共类BaseClass { public ISomeObject Property {得到;组; } } 和从ClassClass继承的ChildClass。我需要在ChildClass中使用BaseClass的Property构造函数,但我没有根据需要由IoC初始化,并且其值为null。如果我在ChildClass的方法中使用它,则会初始化Prop ..
发布时间:2020-09-30 00:11:28 C#/.NET

在基类上向构造函数添加新参数意味着我必须重构所有从其继承的类?

我正在使用控制容器的温莎城堡反转。 我发现,如果需要通过基类上的构造函数注入新组件,则全部从其继承的子类需要将该组件传递给基础的构造函数。 但是,如果我有数十个从该基类继承的孩子,以及数十个实例化这些孩子类的单元测试,该怎么办?我真的需要遍历并重构所有这些构造函数以及对这些构造函数的调用吗?我是否缺少一种设计模式,该模式将允许我轻松地修改基类构造函数,而不必随后重构该类的所有子级? ..

使用城堡温莎的ASP.NET MVC中的条件依赖项解析

我正在尝试在我们的代码中解决这种情况,我需要在运行时根据特定条件(例如是否存在某些查询字符串值)来解决依赖性。 让我说我有一个控制器AuthenticationController,并且我有两种身份验证服务。 公共类AuthenticationController { 私有只读IAuthenticationService authenticationService; pub ..