.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
    internal interface ITestService : ITransientDependency
        {
            string SayHello();
        }
    

      

  4. Program类:
    internal class Program
        {
            static void Main(string[] args)
            {
                CreateHostBuilder(args).Build().Run();
            }
    
            internal static IHostBuilder CreateHostBuilder(string[] args) =>
               Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostingContext, service) =>
                {
       //AbpApplicationFactory 用于创建应用程序并加载所有以AppModule作为启动模块的模块. Initialize()方法启动应用程序. using (var application = AbpApplicationFactory.Create<AbpDependencyInjectionDemoModule>()) { application.Initialize();//启动abp Console.WriteLine("DoWork..."); } }); }

        

  5. 添加class AbpDependencyInjectionDemoModule
        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加载
    [DependsOn(
            typeof(ApplicationModule)
        )]
    

      

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

posted @ 2022-02-13 19:52  哈喽哈喽1  阅读(303)  评论(0)    收藏  举报