Wir müssen eine unmanaged Bibliothek in unserem Code verwenden, die statische Methoden hat. Ich möchte die Bibliotheksoperation als Abhängigkeit in meinen Code einführen. Abgesehen von statischen Methoden besitzt die Bibliothek eine Initialisierungsmethode und eine Einstellungsmethode, beide sind global. Ich kann das also nicht einfach in eine Instanzklasse einbinden, denn wenn eine Instanz eine Einstellung ändert, sind alle anderen Instanzen betroffen, und wenn eine Instanz initialisiert wird, werden alle anderen Instanzen neu initialisiert.Refactoring einer statischen Klasse zur Verwendung mit Dependency-Injektion
Ich dachte darüber nach, es als Singleton-Klasse einzuführen. Auf diese Weise wird es in einer Instanz-Klasse sein, aber es wird nur eine Instanz geben, so dass ich mich nicht darum kümmern muss, die Einstellungen oder die Initialisierung zu ändern. Was denkst du über diesen Ansatz? Ich bin ziemlich neu im Abhängigkeitsinjektionsmuster und ich bin mir nicht sicher, ob das Singleton-Muster eine gute Lösung ist. Was wäre Ihre Lösung für einen ähnlichen Fall?
Bearbeiten: Die Initialisierung nimmt auch einen Parameter, so kann ich nicht einfach die Methodenaufrufe sperren und neu initialisieren und Einstellungen jedes Mal ändern, wenn es aufgerufen wird.
Edit 2: Hier sind die Unterschriften von einigen Methoden:
public static void Initialize(int someParameter)
// Parameter can only be changed by re-initalization which
// will reset all the settings back to their default values.
public static float[] Method1(int someNumber, float[] someArray)
public static void ChangeSetting(string settingName, int settingValue)
Die Klasse, die Sie umbrechen möchten, ist es statische oder nur einige statische Methoden? Muss Ihr Wrapper zusätzliche Funktionen bereitstellen? – JMan
Ihre Idee scheint vernünftig – sll
@ Jeroen es muss einige Methoden Überladungen zur Verfügung stellen. Alle Methoden in der Bibliothek verwenden Arrays und ich möchte sie in Klassen einbinden. Die Bibliothek ist in C++ geschrieben und die Klasse, die ich umbrechen möchte, ist statisch, nicht nur die Funktionen. – hattenn