gpt4 book ai didi

c# - Dotnet Core 是否实现组合根发现?

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:05 25 4
gpt4 key购买 nike

我刚刚开始一个使用 .net 核心 (1.1) 的新项目,并想在 DI 容器的子程序集中注册服务。在以前的项目中,我在具体类所在的程序集中注册了服务,这使我可以拥有一个公共(public)接口(interface)和一个私有(private)(或内部)实现。

如果不自己编写某种程序集发现函数(我知道这并不难),我看不到在 .net 核心中实现它的方法。

AutoFac 使用 Modules,Ninject 使用 NinjectModule,LightInject 使用 ICompositionRoot,.net core 中是否有等效项(不替代 DI 框架)。

最佳答案

没有像 Autofac 或 CaSTLe Windsor 这样的模块。

您可以从您想要内部实现的程序集中导入 Microsoft.Extensions.DependencyInjection 并且:

公开一个扩展方法,如:

public static IServiceCollection AddMyServices(this IServiceCollection c) 
{
c.Register<IPublicInterface,IInternalImplementation>();
}

在应用程序中,您只需调用 ConfigureServices 中的 AddMyServices,该程序集的内部类将不可见。

这只是一个想法,还没有尝试过。此外,如果您喜欢 DI,您可以轻松插入 Autofac。 Autofac 提供了很多您无法从内置 DI 获得的功能,如果它是一个大型应用程序,您很快就会需要它。

关于c# - Dotnet Core 是否实现组合根发现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46111462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com