Kla*_*msi 5 c# service dependency-injection core
在我的 .net Core C# 应用程序(不是 ASP)中,我构建了一个类来处理我的服务。你必须像这样配置它
MyBaseClass.BuildServiceProvider(serviceCollection =>
serviceCollection
.AddMyConfiguration(out var config)
.AddMyEMailService()
.AddMyLoggingService(config)
);
Run Code Online (Sandbox Code Playgroud)
问题是AddMyLoggingService,因为我不知道如何获取其他服务。我已经传入了配置,我认为这不是 DI 想要的,现在我还必须传入电子邮件服务。
日志服务看起来像这样
public static class ServiceCollectionHelper
{
public static IServiceCollection AddMyLoggingService(this IServiceCollection coll, IConfiguration config)
{
coll.AddLogging(builder =>
builder
.AddConfiguration(config)
.AddDebug()
.AddEventLog()
.AddProvider(new MyTicketLoggerProvider(config))
);
return coll;
}
}
Run Code Online (Sandbox Code Playgroud)
现在 MyTicketLoggerProvider 需要注入 .AddMyEMailService 的电子邮件服务来创建票证(通过向票证系统发送电子邮件)
我不知道什么是最佳实践。
[编辑] 一种解决方法是我在 AddMyLoggingService 中创建一个临时提供程序
var tmpProvider = coll.BuildServiceProvider();
Run Code Online (Sandbox Code Playgroud)
能够访问服务
| 归档时间: |
|
| 查看次数: |
458 次 |
| 最近记录: |