Wie erlaube ich optionale Dienste mit Microsoft.Extension.DependencyInjection?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie erlaube ich optionale Dienste mit Microsoft.Extension.DependencyInjection?

Post by Anonymous »

Ich spiele mit ASP.NET Core in meinem eigenen Hobbyprojekt herum, ich möchte ein Framework erstellen, das von einem Entwickler genutzt wird, und ich möchte optionale Dienste zulassen und Standardeinstellungen verwenden, wenn diese nicht registriert sind.

Ich erhalte die Fehlermeldung „Dienst für Typ „XXX“ konnte nicht aufgelöst werden“, aber ich würde es vorziehen, wenn der DI null zurückgibt, anstatt eine Ausnahme auszulösen.
Ich möchte optionale Dienste zulassen, also wenn ein Dienst vorhanden ist gefunden, verwenden Sie das im Konstruktor. Wenn es nicht gefunden wird, übergeben Sie null an den Konstruktor.

In meiner Implementierung habe ich:

Code: Select all

public IServiceManager(IService service, ...)
{
_service = service ?? new DefaultService();
...
}
Wie Sie sehen, verwenden Sie die Standardeinstellung, wenn der Dienst nicht gefunden werden kann (null).
Vielleicht verstehe ich falsch, wie DI funktioniert. Vielleicht könnte ich stattdessen eine Factory verwenden, um dies zu tun?
In meinem System kommt es jedoch häufig vor, dass ich Standarddienste verwende, wenn keine bereitgestellt werden. Deshalb benötige ich eine Lösung, die nicht erfordert, dass der Konsument der API einen Dienst registriert.

Gibt es eine Möglichkeit, ASP.NET Core DI so zu konfigurieren, dass Null zurückgegeben wird, anstatt eine Ausnahme auszulösen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post