service-locator相关内容
创建可设计的 .NET 组件时,您需要提供默认构造函数.来自 IComponent 文档: 要成为组件,类必须实现 IComponent 接口和提供一个基本的构造函数不需要参数或单个IContainer 类型的参数. 这使得通过构造函数参数进行依赖注入成为不可能.(可以提供额外的构造函数,但设计者会忽略它们.)我们正在考虑的一些替代方案: 服务定位器 不要使用依赖注入,而是
..
我真的很困惑何时使用 getServiceLocator 何时不使用.举个例子: + 模块-+ 你好世界--+ 源代码---+ 控制器----+ 索引控制器.php----+ IndexControllerFactory.php----+ 服务----+ 登录服务.php----+ GreetingService.php----+ GreetingServiceFactory.php Gree
..
我根据 James Still 的博客文章 使用 RabbitMQ 的真实 PubSub 消息传递. 在他的文章中,他使用一个静态类来启动队列订阅者并为队列中的事件定义事件处理程序.然后,此静态方法通过静态工厂类实例化事件处理程序类. 使用 RabbitMQ.Client;使用 RabbitMQ.Client.Events;使用系统;使用 System.Text;命名空间 NST.Web.
..
我有一部分代码,我通过依赖注入注入了两个服务 $checker 和 $paginator.它完美地工作: 公共函数索引(Request $request, Paginator $paginator, Checker $checker){$result = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];$partialResult = $paginator->getPar
..
考虑下面的代码(已简化).我有一个服务类,它返回一个特定 DTO 对象的列表,每个对象都实现了自己的特定接口.在实际代码中,当我使用遗留代码时,这些是通过遍历数据集来填充的. 问题: 我们如何在不更新 DTO 或使用服务定位器反模式的情况下创建/使用 DTO?在 Composition Root 中组合一个空的 DTO 对象并通过构造函数将其注入 Service 类并没有多大意义,因为
..
现在我们使用 DI/IOC,当我们需要将额外的参数传递给构造函数时,我们使用工厂类,例如 公共类EmailSender{内部 EmailSender(字符串 toEmail,字符串主题,字符串正文,ILogger emailLogger){.....}}公共类 EmailSenderFactory{ILogger emailLogger;公共 EmailSenderFactory(ILogger
..
我正在为旧的 ASP.NET 应用程序设计一些架构更改.我设计了一些用于依赖解析的类的原型,这些类模仿了 ASP.NET MVC 的 IDependencyResolver.我不会发布,因为它的界面几乎相同,但使用其他自然语言. 我发现它可能被认为是服务位置,反过来通常(在某些情况下不完全)谴责它以支持依赖注入.尽管如此,我找不到任何反对使用 ASP.NET MVC 的依赖解析实现的建议.
..
我目前正在权衡 DI 和 SL 之间的优缺点.但是,我发现自己陷入了下面的第 22 条陷阱,这意味着我应该对所有事情都使用 SL,并且只将 IoC 容器注入每个类. DI Catch 22: 某些依赖项,例如 Log4Net,根本不适合 DI.我称这些为元依赖,并认为它们对调用代码应该是不透明的.我的理由是,如果一个简单的类 'D' 最初是在没有日志记录的情况下实现的,然后增长到需要日
..
最近我阅读了Mark Seemann 的关于服务的文章定位器反模式. 作者指出了 ServiceLocator 是反模式的两个主要原因: API 使用问题(我完全没问题) 当类使用服务定位器时,很难看到它的依赖关系,因为在大多数情况下,类只有一个无参数构造函数.与 ServiceLocator 相比,DI 方法通过构造函数的参数显式公开依赖项,因此在 IntelliSense 中很容
..
背景 我们正在使用 ASP.Net Core 和 Entity Framework Core 2.2 构建 Web 应用程序 我们正在连接到旧数据库.设置是有 16 个数据库,所有数据库都具有完全相同的模式,保存不同的上下文数据.我们无法改变这一点. 我们需要在运行时根据请求参数连接到特定数据库. 想象一下,母公司下的每家企业都有一个数据库. 想象一下,每个数据库都有
..
背景 我们正在使用 ASP.Net Core 和 Entity Framework Core 2.2 构建 Web 应用程序 我们正在连接到旧数据库.设置是有 16 个数据库,所有数据库都具有完全相同的模式,保存不同的上下文数据.我们无法改变这一点. 我们需要在运行时根据请求参数连接到特定数据库. 想象一下,母公司下的每个企业都有一个数据库. 想象一下,每个数据库都有
..
我正在学习 zf2,从网上阅读文档、教程等.现在我对 Zend\ServiceManager\ServiceManagerAwareInterface.php 和 Zend\ServiceManager\ServiceLocatorAwareInterface.php 感到困惑. 也在某些地方(如控制器)我使用 $this->getServiceLocator() 来获取 ServiceMa
..
我想访问位于我的个人库(在 vendor 目录).但是尽管我在网上搜索,我还是没有成功. 我知道如何访问模块的配置文件: \MyModule\Module::getConfig() 我知道如何从控制器访问全局配置: $this->getServiceLocator()->get('config'); 但是如何从供应商目录中的文件访问这些?我的图书馆没有扩展任何东西,这可能是问题的根源
..
我读到实现:ServiceLocatorAwareInterface 会将 serviceLocator 注入同一个类.所以我得到了这个: Class MyModel 实现了 ServiceLocatorAwareInterface {受保护的 $serviceLocator;公共函数 setServiceLocator(ServiceLocatorInterface $serviceLocat
..
这是部分html代码: PONumber 20202022 02_001 我只需要获取里面的文本(预期值:20202022 02_001)我尝试了以下变体: By.xpath("/descendant:
..
我正在寻找一种干净的模式来在.Net扩展方法中使用依赖项,而无需显式更新或使用服务定位器: 公共静态类HttpContextExtensions{公共静态SomeClass ExtensionMethod(此HttpContext上下文){//希望避免这种情况vardependency = ServiceLocator.GetService();返回依赖关系.D
..
我有一个MVC应用程序,该应用程序具有定义良好的域模型,实体,存储库和服务层. 为了避免在控制器内部实例化我的服务类,从而使控制器陷入不适合它们的逻辑的困扰,我创建了一个帮助器,其作用类似于 我看到的基本上是带有依赖项的工厂类( App \ Controller \ Action \ Helper \ Service ),这些依赖项是通过ctor注入的.因此,您的类不知道其依赖项来自何处,
..
在搜索Flutter的依赖注入解决方案时,我发现了两个很棒的库: provider 和 get_it . 据我所知, provider 具有更多样板,但它非常适合Flutter,允许 Consumer 重建 Widget的一部分树,一旦注入值更改. 另一方面, get_it 更直接,更易于使用并且不依赖Flutter,因此可以与任何Dart代码一起使用. 它们之间是否还有其他区别和
..
我有一部分代码通过依赖注入注入了两个服务 $ checker 和 $ paginator .效果很好: 公共功能索引(请求$ request,分页器$ paginator,检查器$ checker){$ result = ['a','b','c','d','e','f','g'];$ partialResult = $ paginator-> getPartial($ result,0,3);$
..
我试图静态检查可变参数模板参数列表中是否存在类型.但是,此模板列表实际上存在于传递单一类型的类中.答案此处显示了如何检查参数列表或参数包,但是我不确定如何测试包含可变参数模板的类. 例如 模板服务类{};模板类ServiceLocator{上市:模板夯;解决(){static_assert(check_t
..