【发布时间】:2018-10-04 10:30:54
【问题描述】:
我正在尝试使用内置的 .Net 依赖注入重写 .Net Core 中的一些代码。以前,我使用当前代码创建实例(它使用 Unity for DI),效果很好。
var instance = (IPipe)UnityHelper.Container.Resolve(implementation);
对于 .Net Core,我首先尝试了标准 Activator.CreateInstance,它运行良好并创建了我期待的 IPipe 实例。
var instance = (IPipe)Activator.CreateInstance(implementation)
但是。那么问题是,如果实现是在 ctor 中注入服务,那么它们将无法解决(这就是为什么我在上一个项目中使用 Unity.Resolve 来解决这个问题)。
经过一番研究,我发现了 ActivatorUtilities 类,并将其替换为下面的代码(serviceProvider 为 IServiceProvider)
var instance = ActivatorUtilities.CreateInstance<IPipe>(serviceProvider, implementation);
但是,我现在收到当前错误。
找不到适合“IPipe”类型的构造函数。确保 类型是具体的,并且为所有参数注册了服务 一个公共构造函数。
我不明白为什么 Activator.CreateInstance 工作正常,但这是在抱怨 IPipe 构造函数?
【问题讨论】:
标签: c# asp.net-core .net-core asp.net-core-2.0