【发布时间】:2020-08-14 18:15:13
【问题描述】:
我有 2 项服务
MainService
PDFGeneratorService
它们是作用域
services.AddScoped<IMainService
我想在参数中将MainService 实例传递给PDFGenerator 方法作为监听器:
示例实现:
public interface IFileGeneratorListener {
Task <int> Notify(int fileId);
}
public class MainService: IMainService, IFileGeneratorListener {
private readonly IPDFGeneratorService _pDFGeneratorService;
public MainService(IPDFGeneratorService service) {
_pDFGeneratorService = service;
}
public Task MainTask() {
_pDFGeneratorService.Generate(1, this);
}
public Task<int> FileGeneratedNotification(int fileId) {
Debug.Writeline($ "file {fileId} was generated");
}
}
public class PDFGeneratorService: IPDFGeneratorService {
public void Generate(int fileId, IFileGeneratorListener listener) {
// generate the file....
listener.Notify(fileId);
}
}
这样可以吗?
【问题讨论】:
-
看起来不错。这通常是与控制反转 (IoC) 一起使用的模式
标签: c# asp.net-core dependency-injection asp.net-core-2.2