Für .NET Generic Host Es ist möglich, mehrere Implementierungen derselben Serviceschnittstelle zu registrieren. Bei der Materialisierung dieses Dienstes wird der letzte hinzugefügte hinzugefügt (das ist auch für mehrere Implementierungen, die mit demselben Schlüssel registriert sind): < /p>
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Threading.Tasks;
namespace IHostTest;
internal class Program
{
static async Task Main()
{
var hostBuilder = Host.CreateDefaultBuilder().ConfigureServices(services =>
{
services.AddSingleton();
services.AddSingleton();
services.AddKeyedSingleton("key");
services.AddKeyedSingleton("key");
});
var host = hostBuilder.Build();
//will get SomeService2 here
var service = host.Services.GetRequiredService();
//will also get SomeService2 here
var keyedService = host.Services.GetRequiredKeyedService("key");
await host.RunAsync();
}
}
internal interface ISomeService
{ }
internal class SomeService1 : ISomeService
{ }
internal class SomeService2 : ISomeService
{ }
< /code>
Gibt es eine Möglichkeit, mehrere Service -Implementierungen zu verbieten? Ich muss eine Ausnahme bekommen, wenn ich in diesem Fall meinen Gastgeber baue. Oder die Erkennung einer solchen Situation über Unit -Tests ist die einzige Option?
Für .NET Generic Host Es ist möglich, mehrere Implementierungen derselben Serviceschnittstelle zu registrieren. Bei der Materialisierung dieses Dienstes wird der letzte hinzugefügte hinzugefügt (das ist auch für mehrere Implementierungen, die mit demselben Schlüssel registriert sind): < /p> using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System.Threading.Tasks;
namespace IHostTest;
internal class Program { static async Task Main() { var hostBuilder = Host.CreateDefaultBuilder().ConfigureServices(services => { services.AddSingleton(); services.AddSingleton();
services.AddKeyedSingleton("key"); services.AddKeyedSingleton("key"); }); var host = hostBuilder.Build(); //will get SomeService2 here var service = host.Services.GetRequiredService(); //will also get SomeService2 here var keyedService = host.Services.GetRequiredKeyedService("key");
await host.RunAsync(); } }
internal interface ISomeService { }
internal class SomeService1 : ISomeService { }
internal class SomeService2 : ISomeService { } < /code> Gibt es eine Möglichkeit, mehrere Service -Implementierungen zu verbieten? Ich muss eine Ausnahme bekommen, wenn ich in diesem Fall meinen Gastgeber baue. Oder die Erkennung einer solchen Situation über Unit -Tests ist die einzige Option?
Ich habe eine .NET 8.0 -Konsolenanwendung, die .NET Generic Host (Microsoft.Extensions.Hosting 8.0.0 Nuget -Paket) verwendet. Wenn ich meine Bewerbung mit Strg+C dispose () schließe, wird mein Dienst...
Ich habe ArrayList, die 4 Elemente enthält. Jedes Element ist von Typliste . Ich versuche, das erste Element von ArrayList mit dem folgenden Code zu erhalten. Es führt jedoch Fehler
Ich muss eine Aktion (d. H. E., Log -Erfolgsabschaltung) ausführen, wenn alle registrierten Dienste in .NET Generic Host entsorgt werden. Ich hoffe using Microsoft.Extensions.DependencyInjection;...