winform 改依赖注入

internal static class Program
{
    /// <summary>
    ///  The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        ApplicationConfiguration.Initialize();

        // 读取配置文件
        var configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .Build(); 

        // 创建服务容器
        var services = new ServiceCollection();

        // 注册 IConfiguration
        services.AddSingleton<IConfiguration>(configuration);

        // 注册日志服务
        services.AddLogging(builder =>
        {
            builder.AddConsole();
        });
        
        // 注册服务  
        services.AddSingleton<MultiMqttService>();
        services.AddSingleton<RabbitMqService>(); 
        services.AddSingleton<IMutaCacheRepository<DeviceInfo>, DeviceInfoRepository>();

        // 注册Form1为瞬时(每次都新建),如果你希望Form1也是单例,可以用AddSingleton
        services.AddTransient<Form1>();

        // 构建服务提供器
        var serviceProvider = services.BuildServiceProvider();
         
        // 解析Form1并运行
        var form = serviceProvider.GetRequiredService<Form1>();
        Application.Run(form);
    }
}
发表回复 0

Your email address will not be published. Required fields are marked *