Wie erstelle ich den Singleton -Dienst, der von einem anderen Dienst abhängt, mit dem IserviceProvider?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie erstelle ich den Singleton -Dienst, der von einem anderen Dienst abhängt, mit dem IserviceProvider?

Post by Anonymous »

Aufgrund einiger Entwicklungsbeschränkungen bei der Verwendung von .NET 8 muss ich einen wiederverwendbaren Dienst verwalten. Diese müssen entweder vorübergehend oder Singleton sein, aber 1 von 3 Service hängt vom Rest ab. < /P>

Code: Select all

public static IServiceCollection SetupLoggerFactory(this IServiceCollection services)
{
services.AddSingleton(new LoggerFactory());
return services;
}

public static IServiceCollection SetupKafkaProducerForFoo(this IServiceCollection services, IConfiguration config)
{
services.AddSingleton(new ProducerService());
return services;
}
< /code>
Der letzte Dienst < /p>
public static IServiceCollection GetAppLogger(this IServiceCollection services, IServiceProvider serviceProvider)
{
services.AddSingleton
(new LoggerAdapter(
serviceProvider.GetService(), serviceProvider.GetService()));
return services;
}
Ich muss das Argument des Dienstanbieters übergeben, aber ich weiß nicht, wie. /p>

Code: Select all

var builder = WebApplication.CreateBuilder(args);

builder.Services.SetupLoggerFactory();
builder.Services.SetupKafkaProducerForFoo(builder.Configuration);
builder.Services.GetAppLogger(missingArg);
Irgendwie kann ich die GetRequiredService -Methode nicht erhalten, aber wenn ich
tuevar serviceProvider = app.Services;
< /code>
builder.services.getApplogger(ServiceProvider);
Es macht einen Fehler aus: < /p>

Ausnahmebeingängige Ausnahme. System.invalidoperationException: Die Dienstsammlung kann nicht geändert werden, da sie nur schreibgeschützt ist. .Extensions.DependencyInjection.serviceCollection.System.Collections.generic.icollection

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post