dependency-injection 相关问题

一种设计模式,通过动态地向软件组件中注入需要运行的依赖项来减少组件之间的耦合。

为什么 HTTP 服务需要 @Injectable 装饰器,而自定义服务在 Angular 2 中不需要?

为什么我在使用 http 进行 DI 时需要包含 @Injectable,但在使用我创建的自定义服务进行 DI 时不需要它? 例如: //这里没有@Injectable() 导出类测试{

回答 1 投票 0

如何使用Koin DI框架注入LocationTracker

我要从希尔特迁移到科因。 使用 Hilt,我执行以下操作来注入 LocationTracker: @模块 @InstallIn(SingletonComponent::class) 对象位置模块 { @提供 @辛格尔顿 ...

回答 1 投票 0

无法使用 Quarkus 将发射器注入到类中:jakarta.enterprise.inject.spi.DefinitionException:SRMSG00019:无法连接发射器

我有一堂课,我在 Quarkus 应用程序中使用 Quartz 对时间表进行检查。 结果应使用发射器通过 AMQP 发送。 不幸的是发射器不能被注入...

回答 1 投票 0

记录器依赖注入错误(无法读取未定义的属性)

当我将记录器作为类的依赖项时,我收到以下错误: 错误消息详细信息的屏幕截图 E:\my_site\sr

回答 0 投票 0

通过工厂注册开放通用 Serilog 记录器

可以通过惯用的.NET代码解析带有类别的框架记录器: 使用 Microsoft.Extensions.Logging; 公共课 Foo { 私有只读 ILogger _logger; 公共 Foo(ILogger...

回答 1 投票 0

尝试使用具有组合根的“IServiceProvider”获取实例时出现开放通用接口问题

使用.NET Core DI容器,向DI容器注册开放通用接口,但是在尝试以两种不同的方式解析它以获取其对应的实例时,不断出现编译异常...

回答 1 投票 0

Logger依赖注入问题,请帮助我

当我将记录器作为类的依赖项时,我收到以下错误: 错误消息详细信息的屏幕截图 E:\my_site\sr

回答 0 投票 0

TYPO3依赖注入仅注入*()方法,而不是构造函数

我正在从 TYPO3 v10 升级到 v11。 在 TYPO3 v10 中,这有效: 我正在从 TYPO3 v10 升级到 v11。 在 TYPO3 v10 中这有效: <?php use TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement; class ServiceSelectFormElement extends GenericFormElement { public function __construct(string $identifier, string $type, ApiService $apiClient) { $this->apiClient = $apiClient; parent::__construct($identifier, $type); } } 在 TYPO3 v11 中它不再起作用,并且我收到错误: 未捕获的 TYPO3 异常:函数 Vendor\Example\Form\Element\ServiceSelectFormElement::__construct() 的参数太少,2 个传入 /var/www/typo3/public/typo3/sysext/core/Classes/Utility/GeneralUtility.php在第 3215 行,正好是预期的第 3 行 所以我必须从构造函数注入回到inject*()方法注入: <?php use TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement; class ServiceSelectFormElement extends GenericFormElement { public function injectApiClient(ApiService $apiClient): void { $this->apiClient = $apiClient; } ..但是这个注入方法不会自动调用,除非我们将类标记为公共并在Configuration/Services.yaml中启用自动装配: services: Vendor\Example\Form\Element\ServiceSelectFormElement: public: true autowire: true calls: - method: injectApiClient arguments: $apiClient: '@Vendor\Example\Service\ApiService' 但这会导致另一个错误,因为它尝试注入构造函数参数: [ Symfony\Component\DependencyInjection\Exception\RuntimeException ] 无法自动装配服务“Vendor\Example\Form\Element\ServiceSelectFormElement”:方法“TYPO3\CMS\Form\Domain\Model\FormElements\AbstractFormElement::__construct()”的参数“$identifier”是类型提示的“string”,您应该显式配置其值。 现在我的问题:如何防止 TYPO3/Symfony 注入构造函数参数,同时仍然调用我的 inject*() 方法? 您需要在 $identifier 中配置构造函数参数($type、Services.yaml)以避免 Symfony 尝试自动装配它们。然后,您单独定义对 injectApiClient 的调用。 YAML services: Vendor\Example\Form\Element\ServiceSelectFormElement: public: true autowire: false # Disable autowiring for constructor arguments: $identifier: '' # Default value or a placeholder $type: '' # Default value or a placeholder calls: - method: injectApiClient arguments: $apiClient: '@Vendor\Example\Service\ApiService' autowire => false:防止 Symfony 尝试自动装配构造函数参数。 arguments => 在构造函数中设置 $identifier 和 $type 的默认值。 calls => 配置 injectApiClient() 使用 ApiService 依赖项进行调用。 TYPO3 v11 重视使用 inject*() 而不是构造函数注入,您应该更改您的类以使用 setter 注入。 PHP <?php use TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement; use Vendor\Example\Service\ApiService; class ServiceSelectFormElement extends GenericFormElement { protected ApiService $apiClient; public function injectApiClient(ApiService $apiClient): void { $this->apiClient = $apiClient; } public function initialize(): void { // your code to set make sure $apiClient is set } } ?> 这个应该可以!!!

回答 1 投票 0

将 Autofac 与 HostApplicationBuilder 结合使用

我正在构建一个新的.net 8辅助服务,微软已经修改了通用主机。微软软件定义网络 HostApplicationBuilder 构建器 = Host.CreateApplicationBuilder(args); builder.Services.AddHostedService<

回答 2 投票 0

如何在 C++ 中以元组形式获取构造函数参数类型?

无法检索元组中的构造函数参数。 我试图将给定类的构造函数参数类型提取为 std::tuple。例如,如果我有一个这样的课程: 结构 MyClas...

回答 1 投票 0

如何将注入服务从超类继承到 Angular 2 中的子类组件中

从 Angular v2.0 开始,组件之间支持继承。 给定一个父类,并通过依赖注入向构造函数提供服务,是否可以定义一个子类......

回答 1 投票 0

Android + Kotlin + Hilt:Activity 没有零参数构造函数

我正在使用 Kotlin 和 Hilt 开发一个多模块应用程序,我的 MainActivity 在启动时崩溃,出现以下异常: 2022-07-29 09:32:00.547 23850-23850/com.myApp.myApp E/AndroidRuntime:...

回答 2 投票 0

如何使用 Koin DI 框架在存储库中注入用例

我正在从 Hilt 迁移到 Koin,并且我想迁移使用 Hilt 注入的以下存储库: @模块 @InstallIn(SingletonComponent::class) 对象网络模块 { @提供 有趣

回答 1 投票 0

使用 DaggerHilt 注入 ComponentActivity 类

我有一个使用活动合约来选择铃声的实现类: 类 RingtonePickerImpl @Inject 构造函数(活动:ComponentActivity) : 铃声选择器 { 私人...

回答 1 投票 0

Angular 2 - 无法解析组件的所有参数:(?)

我启动了一个 Angular2 应用程序,几天来我遇到了一个问题! 无法解析 HomeComponent 的所有参数:(?).(…) 但我的问题与特定的提供者无关:我尝试注入的所有内容......

回答 5 投票 0

使用 Zenject 通过接口注入实现

我正在尝试在Unity中使用Zenject。我有一个接口和它的几个实现。 我想注入 ID,但实现也将具有刻度接口,因为它不是

回答 1 投票 0

导入的服务在抽象类上未定义

我有抽象类Collection,它利用服务数据库来初始化数据库上的集合。我有几个 Collection 的子类实例,它们都需要执行相同的数据库

回答 2 投票 0

Android Hilt DI - 错误:包 {ApplicationClassName}_HiltComponents 不存在

我正在使用新的 Hilt 库进行依赖注入版本 2.28-alpha。我已遵循 Hilt 文档并使用 @HiltAndroidApp 注释来注释 Application 类。但是当...

回答 4 投票 0

Angular + Facebook JS SDK 登录:未请求我的权限

FB.login() 不起作用。 FB 弹出窗口未请求正确的权限。我可以清楚地看到,在源代码中,有一个 fn 处理程序使用正确的参数/正在设置的参数

回答 1 投票 0

使用AddKeyedScoped注册服务和实现

这是我的界面 公共接口IService { 公共任务 GetString(); } 这是我的 DAL 课程 公共类 SampleDAL :IService { 公共异步任务 GetString...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.