.net core控制台引用abp依赖注入及AbpModule

  1. 创建一个.net core3.1控制台应用程序
  2. 添加引用

    <PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.22" />
    <PackageReference Include="Volo.Abp.Core" Version="3.3.2" />

  3. 添加接口 ITestService,类TestService实现方法SayHello
    1
    2
    3
    4
    internal interface ITestService : ITransientDependency
        {
            string SayHello();
        }

      

  4. Program类:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    internal class Program
        {
            static void Main(string[] args)
            {
                CreateHostBuilder(args).Build().Run();
            }
     
            internal static IHostBuilder CreateHostBuilder(string[] args) =>
               Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostingContext, service) =>
                {<br>               //AbpApplicationFactory 用于创建应用程序并加载所有以AppModule作为启动模块的模块. Initialize()方法启动应用程序.
                    using (var application = AbpApplicationFactory.Create<AbpDependencyInjectionDemoModule>())
                    {
                        application.Initialize();//启动abp
                        Console.WriteLine("DoWork...");
                    }
                });
        }

        

  5. 添加class AbpDependencyInjectionDemoModule
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class AbpDependencyInjectionDemoModule : AbpModule
    {
        /// <summary>
        /// service注入
        /// </summary>
        /// <param name="context"></param>
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            var services = context.Services;
            Console.WriteLine("注入Services");
        }
     
        /// <summary>
        /// 程序初始化
        /// </summary>
        /// <param name="context"></param>
        public override void OnApplicationInitialization(ApplicationInitializationContext context)
        {
            var serviceProvider = context.ServiceProvider;
            var testservice = serviceProvider.GetService<ITestService>();
            Console.WriteLine(testservice.SayHello());
        }
     
    }

      

  6. 运行   有打印Hello,说明注入ITestService服务成功  
  7. 其他程序集使用abp依赖注入,先添加程序集module加载
    1
    2
    3
    [DependsOn(
            typeof(ApplicationModule)
        )]

      

  8.  abp是通过加载module所在程序集,注入继承ITransientDependency等相关接口的类或接口

posted @   哈喽哈喽1  阅读(279)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示