繁体   English   中英

从动态加载的程序集加载的类型的 AddHostedService

[英]AddHostedService for Types that are loaded from dynamically loaded assemblies

我有一个带有单个后台服务 (MyInternalBackgroundService) 的 .NET 5 后台工作应用程序。

现在我正在研究模块化插件架构,其中插件被放置在插件目录中,然后从那里加载程序集。 每个程序集可以包含多个继承自 BackgroundService 的类定义。 我加载了从 BackgroundService 继承的类型列表。

我只是不知道如何为加载的类型调用 AddHostedService 方法。 每种方法似乎都会导致不同的编译器错误。

public static IHostBuilder CreateHostBuilder(string[] args) =>
  Host.CreateDefaultBuilder(args)            
    .ConfigureServices((hostContext, services) =>
    {
      services.AddHostedService<MyInternalBackgroundServiceImplementation>();

      TypeInfo[] moduleTypes = // class scanning directories for dlls, load the assemblies and find the desired types
      foreach(var moduleType in moduleTypes)
      {
        // can't find the correct way
        // services.AddHostedService<moduleType>();
        //services.AddHostedService<moduleType.GetType()>();
      }
    });

内部AddHostedService看起来像这样在此处输入图片说明

进一步的AddTransient看起来像这样在此处输入图片说明

所以你可以试试下面的方法(当然只要TypeInfoObjectHere实现了IHostedServiceservices.AddTransient(typeof(IHostedService), TypeInfoObjectHere);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM