Wie kann verhindert werden, dass Clients Ihren Dienst in C# über eine öffentliche Schnittstelle überschreiben?
Posted: 23 Jan 2025, 04:38
Wir entwickeln ein NuGet-Paket, das Kunden zum Hinzufügen zu ihrer ASP.NET-Site verwenden können.
Dann haben wir eine Methode, um unsere Dienste in DI zu registrieren
Der Grund, warum wir die Schnittstelle IOurService haben ist, dass der Kunde den Dienst in seinen Unit-Tests verspotten möchte. Wenn der Dienst gesperrt ist, sagen sie, dass das Testen schwierig sei.
Das Problem besteht jedoch darin, dass sie IOurService mit ihrer eigenen Implementierung über DI überschreiben können.
Da wir die Schnittstelle benötigen, damit der Dienst verspottet werden kann, müssen wir die Schnittstelle behalten und öffentlich machen. Gibt es jedoch eine Praxis, die Kunden daran hindert, unsere Implementierung durch DI zu ersetzen? Wenn sie dies tun und es nicht funktioniert oder Fehler auftreten, werden sie Supportfälle erstellen, und wir müssen uns darum kümmern. Es wäre schön, wenn wir verhindern könnten, dass sie die Bibliothek überhaupt zerstören.
Code: Select all
public interface IOurService {
void DoStuff();
}
public class OurService: IOurService {
public void DoStuff() {
//do things here
}
}
Code: Select all
public static void AddOurServices(this IServiceCollection services) {
services.AddSingleton();
}
Das Problem besteht jedoch darin, dass sie IOurService mit ihrer eigenen Implementierung über DI überschreiben können.
Code: Select all
services.AddOurSerivces();
services.AddSingleton();