如何动态注册依赖项(如asp netcore)使用IOption <T>

Dbl

在使用asp netcore的某个时刻,我注意到与大多数情况下不同,在这些情况下,您注册依赖项如下:

  • services.AddTransient<IService, Service>()
  • services.AddScoped<IService, Service>()
  • services.AddSingleton<IService, Service>()

使用时不需要此过程 IOption<T>

这是我不知道的Microsoft.Extensions.DependencyInjection的功能吗,还是只是一些代码在做反射?(我无法想象如何,因为任何类都可以用于IOptions注入)

在我看来,这似乎是运行时工厂的事情,而不是一些底层程序集扫描+注册。

如果这是Microsoft.Extensions.DependencyInjection的功能,我很想知道它的调用方式,这样我就可以了解更多信息。

TLDR问题:

是否有catch all工厂为其中的请求服务构建实例Microsoft.Extensions.DependencyInjection

恩科西

选项模块IOptions<TOptions>使用开放的泛型注册接口。

例如,一个简单的通用接口

public interface IMyInterface<T> : where T: class {
    T Value { get; }
}

及其实现

public class MyClass<T> : IMyInterface<T> : where T: class {

    public MyClass(IDependency dependency) {
        //...
    }

    public T Value { 
        get {
            //...
        }
    }
}

可以使用(通用)开放类型进行注册,例如

services.AddSingleton(typeof(IMyInterface<>), typeof(MyClass<>));

这样,无论何时IMyInterface<SomeClass>要求解决a,MyClass<SomeClass>都会被激活。容器IMyInterface<SomeClass>通过利用(通用)开放类型来解析,从而无需注册每个(通用)构造类型

ASP.NET Core中的引用依赖注入

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据需要的类注册依赖项(使用 ASP CORE 中的内置 IOC 容器)

来自分类Dev

如何使用依赖项注入配置Action <T>

来自分类Dev

Ioc / DI-如何使用已注册的依赖项?

来自分类Dev

Ioc / DI-如何使用已注册的依赖项?

来自分类Dev

使用LightInject自动注册依赖项

来自分类Dev

如何在内置依赖项注入中使用Func <T>

来自分类Dev

如何使用FakeItEasy使用AutoFixture注册未明确定义为严格的依赖项?

来自分类Dev

如何使用FakeItEasy使用AutoFixture注册未明确定义为严格的依赖项?

来自分类Dev

如何在工厂解析器中使用相同的抽象接口注册2个依赖项?

来自分类Dev

MVVMCross动态构造通用IMvxLog <T>进行依赖项注入

来自分类Dev

如何专门使用NPM本地依赖项进行本地开发,如何使用外部注册表中的依赖项进行生产?

来自分类Dev

使用结构映射依赖项注入时“未注册IUserTokenProvider”

来自分类Dev

使用统一注册实例注入依赖项

来自分类Dev

使用依赖项注入时未注册IUserTokenProvider

来自分类Dev

使用统一注册实例注入依赖项

来自分类Dev

如何在ASP.NET WebForm中使用Ninject注入依赖项?

来自分类Dev

如何在ASP.NET WebForm中使用Ninject注入依赖项?

来自分类Dev

如何在ASP.NET 5中使用“旧”依赖项

来自分类Dev

如何在asp.net控制台应用程序中使用依赖项注入?

来自分类Dev

如何在ASP.NET WebForm中使用Ninject注入依赖项?

来自分类Dev

如何使用 Entityfrmework 从 Asp.netcore 访问数据库

来自分类Dev

如何使用约定注册但动态命名的组件?

来自分类Dev

如何使用phpunit模拟依赖项注入?

来自分类Dev

如何使用RSpec测试依赖项::destroy?

来自分类Dev

如何使用SystemJS指定库依赖项?

来自分类Dev

如何使用jmockit注入模拟的依赖项

来自分类Dev

如何使用quicklisp加载外部依赖项?

来自分类Dev

如何使用CMake配置DBus依赖项

来自分类Dev

如何使用 setuptools 指定依赖项?

Related 相关文章

  1. 1

    如何根据需要的类注册依赖项(使用 ASP CORE 中的内置 IOC 容器)

  2. 2

    如何使用依赖项注入配置Action <T>

  3. 3

    Ioc / DI-如何使用已注册的依赖项?

  4. 4

    Ioc / DI-如何使用已注册的依赖项?

  5. 5

    使用LightInject自动注册依赖项

  6. 6

    如何在内置依赖项注入中使用Func <T>

  7. 7

    如何使用FakeItEasy使用AutoFixture注册未明确定义为严格的依赖项?

  8. 8

    如何使用FakeItEasy使用AutoFixture注册未明确定义为严格的依赖项?

  9. 9

    如何在工厂解析器中使用相同的抽象接口注册2个依赖项?

  10. 10

    MVVMCross动态构造通用IMvxLog <T>进行依赖项注入

  11. 11

    如何专门使用NPM本地依赖项进行本地开发,如何使用外部注册表中的依赖项进行生产?

  12. 12

    使用结构映射依赖项注入时“未注册IUserTokenProvider”

  13. 13

    使用统一注册实例注入依赖项

  14. 14

    使用依赖项注入时未注册IUserTokenProvider

  15. 15

    使用统一注册实例注入依赖项

  16. 16

    如何在ASP.NET WebForm中使用Ninject注入依赖项?

  17. 17

    如何在ASP.NET WebForm中使用Ninject注入依赖项?

  18. 18

    如何在ASP.NET 5中使用“旧”依赖项

  19. 19

    如何在asp.net控制台应用程序中使用依赖项注入?

  20. 20

    如何在ASP.NET WebForm中使用Ninject注入依赖项?

  21. 21

    如何使用 Entityfrmework 从 Asp.netcore 访问数据库

  22. 22

    如何使用约定注册但动态命名的组件?

  23. 23

    如何使用phpunit模拟依赖项注入?

  24. 24

    如何使用RSpec测试依赖项::destroy?

  25. 25

    如何使用SystemJS指定库依赖项?

  26. 26

    如何使用jmockit注入模拟的依赖项

  27. 27

    如何使用quicklisp加载外部依赖项?

  28. 28

    如何使用CMake配置DBus依赖项

  29. 29

    如何使用 setuptools 指定依赖项?

热门标签

归档