c# - 我可以将外部配置与 ASP.NET Core 的默认依赖注入(inject)一起使用吗?

标签 c# asp.net-core dependency-injection

过去,我在其他 DI 框架(例如 Unity)中使用外部配置文件来定义注入(inject)接口(interface)时要提供的具体类型的映射。

这是将包含具体实现的程序集与使用它们的应用程序的已发布副本完全分离的好方法。允许我通过编辑配置来加载替代程序集。

我的印象是这不是 Microsoft.Extensions.DependencyInjection 的一个特性,尤其是通过 code 查看.

我想在我开始在我的 ASP.NET Core 项目中使用不同的 DI 提供程序之前,我只是想要第二个意见来确认这一点。

最佳答案

MS DI 旨在简单、易于上手,并且可以轻松用作其他 IoC/DI 框架的基础以插入其中。

它没有任何自动注册、程序集扫描或装饰器/拦截支持。如果您需要此类功能,您应该使用第三方容器,例如您已经命名的 Unity。

Unity 已经有 Microsoft.Extensions.DependencyInjection 的扩展点,可以在 here on GitHub 中找到或 NuGet .

如 GitHub 上所述,您需要做的就是运行

Install-Package Unity.Microsoft.DependencyInjection

安装包,然后将其添加到您的代码中

  • In the WebHostBuilder add UseUnityServiceProvider(...) method

    public static IWebHost BuildWebHost(string[] args) =>
      WebHost.CreateDefaultBuilder(args)
         .UseUnityServiceProvider()    <------ Add this line
         .UseStartup<Startup>()
         .Build();
    
  • Add method to your Startup class

    public void ConfigureContainer(IUnityContainer container)
    {
        // Could be used to register more types
        container.RegisterType<IMyService, MyService>();
    }
    

关于c# - 我可以将外部配置与 ASP.NET Core 的默认依赖注入(inject)一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50623938/

相关文章:

javascript - 如何从 C# 或 Javascript 检查文件是否存在?

asp.net-core - Visual Studio 2019 测试失败,出现错误“System.ComponentModel.Win32Exception (0x80004005) : This program is blocked by group policy

c# - ASP.Net Core 2.1 - 从子 TagHelper 读取 TagHelper 的父属性

asp.net-core - NSwag + System.InvalidOperationException : The method 'get' on path '/Site' is registered multiple times

java - 黑莓开发 : Architecture Best Practices and Patterns

c# - 使用 XNA 和 .NET 的屏幕保护程序?

c# - 一台视频混合渲染器 9 (VMR9) 可以渲染更多视频流吗?

C# Linq 数据结构,用于最终的数据绑定(bind)。最好的办法?

asp.net-mvc-3 - MVC3 + Ninject : What is the proper way to inject the User IPrincipal?

java - 获取无法解析引用本地 ejb-ref 未实现父接口(interface)