Verbieten Sie mehrere Service -Implementierungen in .NET Generic Host Service CollectionC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Verbieten Sie mehrere Service -Implementierungen in .NET Generic Host Service Collection

Post by Anonymous »

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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post