7.1ASP.NET Core中的依赖注入
// Add services to the container. var assemblies = Assembly.Load(typeof(ModuleInitializer).Assembly.GetName()); //ReflectionHelper.GetAllReferencedAssemblies();//获取用户的所有程序集,代码过长,没有在这里给出 builder.Services.RunModuleInitializers(assemblies);//扫描指定程序集中所有实现了IModuleInitializer的类,并调用Initialize方法 using var sp = builder.Services.BuildServiceProvider(); var items = sp.GetServices<IMyService>(); foreach(var item in items) { item.SayHello(); }
//创建接口和类 using System.Reflection; public static class IServiceCollectionExtensions { public static IServiceCollection RunModuleInitializers(this IServiceCollection services, Assembly assemblies) { //扫描所有程序集中实现了IModuleInitializer的类 foreach (var implType in assemblies.GetTypes().Where(t => !t.IsAbstract && typeof(IModuleInitializer).IsAssignableFrom(t))) { //创建了ImoduleInitializer类 var initializer = (IModuleInitializer?)Activator.CreateInstance(implType); initializer.Initialize(services); } return services; } }
class ModuleInitializer : IModuleInitializer { public void Initialize(IServiceCollection services) { services.AddScoped<IMyService, CnService>();//将CnService注册为IMyService的实现服务 } } public interface IModuleInitializer { public void Initialize(IServiceCollection services); }
public interface IMyService { void SayHello(); } public class CnService : IMyService { public void SayHello() { Console.WriteLine("你好"); } }
只是通过读取程序集注入IServiceCollection容器中。记录下,防止以后要写的时候方便点。
分类:
技术目录九[Net Core]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端