【发布时间】:2020-04-14 13:44:32
【问题描述】:
这是我的课。
public class DemoJob : IJob
{
private readonly ILogger logger;
public DemoJob(ILogger<SecondJob> logger)
{
this.logger = logger;
}
public async Task Execute(IJobExecutionContext context)
{
await Task.Run(() =>
{
Console.WriteLine(context.JobDetail.JobType.FullName);
logger.LogError(context.JobDetail.JobType.FullName);
});
}
}
我想获得一个类的依赖注入的所有服务。 我可以像这样使用
var service = serviceProvider.GetService(typeof(DemoJob))
看起来还不错。 但现在我想用反射来使用它,比如
var jobType = assembly.GetType("xxxx.SecondJob")
var service = serviceProvider.GetService(jobType)
service 总是返回一个空值。
反正有吗?
【问题讨论】:
-
在最后一个代码sn-p中,我想你的意思是
serviceProvider.GetService(jobType);? -
@KevinGosse 是的,我的错,让我编辑一下。
-
显示您如何注册
SecondJob -
@mtkachenko
services.AddSingleton<SecondJob>();在 Startup.cs 中 -
@KevinGosse 使用
var jobType = Type.GetType($"xxx.DemoJob, {assembly.FullName}");解决了我的问题,谢谢凯文。^o^
标签: c# .net asp.net-core dependency-injection