设为首页 加入收藏

TOP

Windows服务使用Windsor容器
2019-09-17 18:01:26 】 浏览:13
Tags:Windows 服务 使用 Windsor 容器

该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇。

Windsor是ABP框架自带的IOC容器
关于什么是IOC,你可以Bing或者Google一下,英文不错的话推荐看一看 https://www.tutorialsteacher.com/ioc
更多关于Castle Windsor 可以阅读下列文章

现在比较常用的DI组件可以访问awesome系列查看:

微软自带DI替换为Castle Windsor

问题点在于ABP框架使用的是Castle Windsor,而微软提供的官方容器是Microsoft.Extensions.DependencyInjection

这就涉及到一个使用Castle Windsor替换Microsoft.Extensions.DependencyInjection的问题。
Castle Windsor提供了注册的方法,自己实现的话,可以通过循环访问微软自带DI容器,将其一一注册到Castle Windsor容器。

也可以nuget引用一个包:Castle.Windsor.MsDependencyInjection,源码查看:https://github.com/volosoft/castle-windsor-ms-adapter

代码改自如何在控制台应用(.Net Core)使用appsettings.json配置,需要再添加两个包

Microsoft.Extensions.Hosting
Castle.Windsor.MsDependencyInjection

需要添加以下代码

        public IConfiguration AppConfiguration { get; set; }

        public override void PreInitialize()
        {
            var host = new HostBuilder().ConfigureAppConfiguration((hostContext, configApp) =>
            {
                var hostingEnvironment = hostContext.HostingEnvironment;
                AppConfiguration = AppConfigurations.Get(hostingEnvironment.ContentRootPath, hostingEnvironment.EnvironmentName);
            }).ConfigureServices((hostContext, services) =>
            {
                services.AddSingleton(AppConfiguration);

                WindsorRegistrationHelper.CreateServiceProvider(IocManager.IocContainer, services);
            });

            host.Build();
        }

如何使用Castle Windsor

  • 构造函数
  • IocManager.Instance.IocContainer.Resolve()
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇K8S+GitLab-自动化分布式部署ASP... 下一篇C# 填充客户端提交的值到T对象

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目