.NET 在控制台或者桌面程序中使用依赖注入

1.下载Microsoft.Extensions.DependencyInjection包(具体根据自身项目的版本对应去选择)

我这里选择的是.net80版的

2.在Main函数里面写如下代码

// 配置依赖注入容器

csharp 复制代码
var services = new ServiceCollection();
ConfigureServices(services);
csharp 复制代码
private static void ConfigureServices(IServiceCollection services)
{
    // 添加 HttpClientFactory
    services.AddHttpClient();

    // 添加主窗体
    services.AddTransient<TestForm2>();
}

3.在使用的地方取你想要的类型的实例

csharp 复制代码
// 构建服务提供者
var serviceProvider = services.BuildServiceProvider();

// 获取主窗体实例并运行
var runForm = serviceProvider.GetRequiredService<TestForm2>();
Application.Run(runForm);

4.在你使用的类型里面可以使用依赖注入:

csharp 复制代码
public partial class TestForm2 : Form
{
    private readonly IHttpClientFactory _httpClientFactory;

    public TestForm2(
        IHttpClientFactory httpClientFactory
        )
    {
        InitializeComponent();
        _httpClientFactory = httpClientFactory;
    }
}

然后就可以愉快的编程了。

相关推荐
A_nanda16 小时前
C#调用Quartz.NET的完整实现。
c#·.net·quartz
1314lay_100718 小时前
Vue3 + Element Plus项目和C# .Net 7.0 Core后端API项目发布部署到服务器
服务器·前端·javascript·vue.js·elementui·c#·.net
专注VB编程开发20年21 小时前
MC508 PLC支持多线程网络通讯,多客户端连接,要注意不要同时读写(麦格米特PLC)
服务器·网络·windows·.net·plc·mc508·麦格米特
步步为营DotNet1 天前
深度探秘.NET中的IAsyncEnumerable:异步迭代的底层奥秘与高效实践
java·数据库·.net
波波0072 天前
每日一题:.NET中volatile解决了什么问题
开发语言·.net
时光追逐者2 天前
C#/.NET/.NET Core优秀项目和框架2026年1月简报
c#·.net·.netcore
时光追逐者2 天前
一款开源、强大、简单易用的 .NET 假数据生成利器
开源·c#·.net·.net core
用户298698530142 天前
C#: 对文字段落或文本施加阴影?Spire.Doc for .NET 助你一臂之力
后端·c#·.net
小码编匠2 天前
WPF 动态生成行列可变表格的实现方法
后端·c#·.net
追逐时光者2 天前
一款开源、强大、简单易用的 .NET 假数据生成利器
后端·.net