C# 控制台工程使用IOC容器

文章介绍了在C#中如何利用.NET的通用主机(Host)来实现IOC容器,以解决控制台程序中类似JavaSpringBootBatch的依赖注入问题。文中提到了两种方法,一是使用ServiceCollection进行注册和构建,二是结合Autofac容器进行服务注册和解析。通过引入相应的Nuget包,可以在多个类中共享和使用IOC容器。
摘要由CSDN通过智能技术生成

C#的IOC容器

众所周知C#的控制台程序不能像Java的Spring Boot Batch那么丝滑。原因就在于IOC容器。如果
直接创建IOC容器,不论是.NET提供的ServiceCollection 或者 Autofac提供的ContainerBuilder
都只能存在于Program.cs这个启动类,之前百度过很长时间, 大部分的解决方案都是用设置一个静态对象
保存IOC容器,这个能实现,但是很Low!

其实.NET本身是提供了解决方案,通用主机

使用ServiceCollection的IOC容器

var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddSingleton<IBookService, MusicBook>();//注册
using IHost host = builder.Build();
host.Start();

注意Nuget 引入Microsoft.Extensions.DependencyInjection;

使用ContainerBuilder的IOC容器

var builder = Host.CreateDefaultBuilder(args);
builder.ConfigureContainer<ContainerBuilder>(container =>
{
    container.RegisterType<FilesRead>(); //注册
    container.RegisterType<ShellFactory>().PropertiesAutowired();
}).UseServiceProviderFactory(new AutofacServiceProviderFactory());
using IHost host = builder.Build();
host.Services.GetAutofacRoot().Resolve<FilesRead>().Read();
host.Start();

注意Nuget 引入Autofac ,Autofac.Extensions.DependencyInjection;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值