Ich habe die Dokumentation zur Abhängigkeitsinjektion gelesen, aber ich kann nicht den richtigen Ansatz für die Verwendung von ImplementierungFaktory finden, wenn der Delegate verwandte Dienste aus dem DI -Container auflösen muss, um einen anderen Dienst zu konfigurieren. (Alle Dienste implementieren idisposable )
Code: Select all
IHost hostBuilder = Host.CreateDefaultBuilder()
.ConfigureServices(
(context, services) =>
{
services.AddTransient();
services.AddScoped();
services.AddSingleton();
})
.ConfigureServices(
(context, services) =>
{
services.AddTransient(
sp =>
{
var transient = sp.GetRequiredService();
var scoped = sp.GetRequiredService();
var singleton = sp.GetRequiredService();
return new ServiceLifetimeReporter(transient, scoped, singleton);
});
})
.Build();
(Ich verstehe, dass beispielsweise auch ohne Implementierung funktioniert. ImplementationFactory ?
[*] Sollte ich den lokalen Bereich in der Implementierung des Implementierung von manuell erstellen (mit CreateScope ) ?
Code: Select all
Dispose()< /code>) Objekte bevor es erstellt wurde? < /li>
Was wird der richtige Ansatz in dieser (und ähnlichen) Situation sein?Dispose()
wurde nicht aufgerufen)
[*] lokale Bereich erstellen (Scope (
für transient und scoped Lebensdauer)
[*] Verwenden Sie die Verwendung von zum Aufrufen von Dispose () Methoden (Methoden (
für alle Lebensdauer aufgerufen)
Ich habe die Dokumentation zur Abhängigkeitsinjektion gelesen, aber ich kann nicht den richtigen Ansatz für die Verwendung von ImplementierungFaktory finden, wenn der Delegate verwandte Dienste aus dem DI -Container auflösen muss, um einen anderen Dienst zu konfigurieren. (Alle Dienste implementieren idisposable )
[code]IHost hostBuilder = Host.CreateDefaultBuilder()
.ConfigureServices(
(context, services) =>
{
services.AddTransient();
services.AddScoped();
services.AddSingleton();
})
.ConfigureServices(
(context, services) =>
{
services.AddTransient(
sp =>
{
var transient = sp.GetRequiredService();
var scoped = sp.GetRequiredService();
var singleton = sp.GetRequiredService();
return new ServiceLifetimeReporter(transient, scoped, singleton);
});
})
.Build();
[/code]
(Ich verstehe, dass beispielsweise auch ohne Implementierung funktioniert. ImplementationFactory ?
[*] Sollte ich den lokalen Bereich in der Implementierung des Implementierung von manuell erstellen (mit CreateScope ) ?[code]Dispose()< /code>) Objekte bevor es erstellt wurde? < /li>
Was wird der richtige Ansatz in dieser (und ähnlichen) Situation sein?Dispose()[/code] wurde nicht aufgerufen)
[*] lokale Bereich erstellen (Scope ([code]Dispose()[/code] für transient und scoped Lebensdauer)
[*] Verwenden Sie die Verwendung von zum Aufrufen von Dispose () Methoden (Methoden ([code]Dispose()[/code] für alle Lebensdauer aufgerufen)