Ninject 在 .NET 核心中
Ninject in .NET Core
我正在尝试在 2016 年 5 月发布的 .NET Core 中安装 Ninject 3.3.2。我收到一个错误:依赖项 Ninject 3.2.2 不支持框架 .NETCoreApp,版本=v1.0。
有没有人遇到过类似的问题,有什么解决办法吗?
Ninject 不支持 .NET Core。你可以去官网看看有没有版本支持。
ASP.NET Core 内置了自己的依赖注入容器。参见 here。
Ninject不支持.Net Core,我们可以使用.net Core的依赖注入代替。以下是实施步骤。
- 前往 startup.cs
public void
ConfigureServices(IServiceCollection services)
- 添加
services.AddTransient<Interface, Class>();
- 转到要应用依赖项注入的控制器。
- 创建全局
private Interface _propertyName;
- 像这样将接口类型变量传递给构造函数
public Constructor(Interface name)
{
_propertyName= name;
}
- 现在您可以通过 _propertyName 访问 class 的成员。
只是想补充;虽然之前的两个答案都是正确的,因为 ASP.Net 核心确实提供了内置的依赖注入,但对于更高级的场景来说,这是不够的。由于它不支持 Ninject、AutoFac、Unity 或 StructureMap 支持的全部功能。
目前,据我所知,完全支持 .net 核心的唯一依赖注入库是 AutoFac,现在 也是。添加它非常简单。替换内置 DI 所需要做的唯一事情如下。此示例适用于 AutoFac,但它看起来几乎与 Unity 相同。
首先,将 startup.cs 中 ConfigureServices 上的空白替换为 IServiceProvider(依赖于 AutoFac),如下所示:
public IServiceProvider ConfigureServices(IServiceCollection services)
然后创建一个容器构建器,从 ConfigureServices 构建并解析一个 IServiceProvider:
var builder = new ContainerBuilder();
builder.Populate(services);
var container = builder.Build();
return container.Resolve<IServiceProvider>();
我有一个围绕第二部分的包装器,它允许您使用 AutoFac 模块动态加载和构建不同的配置,如果有任何兴趣,我可能会被说服上传到 GitHub 或其他地方。
Ninject 3.3.0 于 2017 年 9 月 26 日发布,现在针对 .NET Standard 2.0,因此也可以在 .NET Core 2.0[=17= 上运行].
从事情的进程来看(参见 GitHub 上的 issues/discussions)似乎 4.0-beta 中的某些更改可能会被恢复。我不希望很快有 4.0 决赛。因此我建议使用当前版本 3 版本。
我正在尝试在 2016 年 5 月发布的 .NET Core 中安装 Ninject 3.3.2。我收到一个错误:依赖项 Ninject 3.2.2 不支持框架 .NETCoreApp,版本=v1.0。 有没有人遇到过类似的问题,有什么解决办法吗?
Ninject 不支持 .NET Core。你可以去官网看看有没有版本支持。
ASP.NET Core 内置了自己的依赖注入容器。参见 here。
Ninject不支持.Net Core,我们可以使用.net Core的依赖注入代替。以下是实施步骤。
- 前往 startup.cs
public void ConfigureServices(IServiceCollection services)
- 添加
services.AddTransient<Interface, Class>();
- 转到要应用依赖项注入的控制器。
- 创建全局
private Interface _propertyName;
- 像这样将接口类型变量传递给构造函数
public Constructor(Interface name)
{
_propertyName= name;
}
- 现在您可以通过 _propertyName 访问 class 的成员。
只是想补充;虽然之前的两个答案都是正确的,因为 ASP.Net 核心确实提供了内置的依赖注入,但对于更高级的场景来说,这是不够的。由于它不支持 Ninject、AutoFac、Unity 或 StructureMap 支持的全部功能。
目前,据我所知,完全支持 .net 核心的唯一依赖注入库是 AutoFac,现在
首先,将 startup.cs 中 ConfigureServices 上的空白替换为 IServiceProvider(依赖于 AutoFac),如下所示:
public IServiceProvider ConfigureServices(IServiceCollection services)
然后创建一个容器构建器,从 ConfigureServices 构建并解析一个 IServiceProvider:
var builder = new ContainerBuilder();
builder.Populate(services);
var container = builder.Build();
return container.Resolve<IServiceProvider>();
我有一个围绕第二部分的包装器,它允许您使用 AutoFac 模块动态加载和构建不同的配置,如果有任何兴趣,我可能会被说服上传到 GitHub 或其他地方。
Ninject 3.3.0 于 2017 年 9 月 26 日发布,现在针对 .NET Standard 2.0,因此也可以在 .NET Core 2.0[=17= 上运行].
从事情的进程来看(参见 GitHub 上的 issues/discussions)似乎 4.0-beta 中的某些更改可能会被恢复。我不希望很快有 4.0 决赛。因此我建议使用当前版本 3 版本。