2009-04-20 6 views
1

Ich arbeite an einem Programm, wo ich Funktionalität mit DI, C# hinzufügen können, so werde ich ein Beispiel erstellen, um zu sehen, ob dies möglich ist.Verwenden von DI zum Hinzufügen neuer Gleichungen für die Berechnung mit 2 Zahlen

Ich habe ein Programm, das ein Benutzer zwei beliebige Zahlen eingibt. Das Programm untersucht dann alle Plugins in einer XML-Datei und verwendet die Klassen, die injiziert werden, um mit diesen beiden Zahlen zu rechnen.

Also, ich lege zwei Klassen, hinzufügen und subtrahieren. Ich lege sie ein und lasse mein Programm laufen.

Idealerweise möchte ich, dass das Programm diese beiden Klassen findet und die Ergebnisse nach dem Durchlaufen der Gleichungen anzeigt.

Jetzt schreibt jemand anderes "Multiply", legt es in ein Verzeichnis, aktualisiert die XML-Datei, und das nächste Mal, wenn ich mein Programm mit zwei Zahlen ausführen, gibt es drei Ergebnisse.

Jetzt weiß ich nicht, wie viele Plugins es sein wird.

Gibt es einen Weg in C#, mit DI, dass ich diese Art von Funktionalität bekommen kann?

Ich weiß nicht, ob es möglich ist.

Ich versuche, dies herauszufinden, wie ich eine Möglichkeit zeigen möchte, einige Daten mit verschiedenen Arten von Graphen zu zeichnen, aber ich denke, die Verwendung der binären Gleichung macht das Erklären einfacher, denke ich.

Ich könnte dies tun, indem Sie manuell die Klasse in der XML-Datei referenziert, so kann es getan werden, aber ich würde gerne ein Abhängigkeits-Framework haben kümmern sich um die schwere Arbeit für mich.

Update: Ich hoffe, das Unity-Framework dafür zu verwenden.

Antwort

2

Sie können eine Schnittstelle (IMathOperation zum Beispiel mit einem einzigen Verfahren wie Compute) aussetzen und tippt dann die Umsetzung der Schnittstelle angeben (Add, Subtract usw.) im DI-Framework-Konfigurationsdatei. In DI-Frameworks können Sie im Allgemeinen sowohl den Assemblynamen als auch den Typnamen angeben, und normalerweise können Sie auch Sammlungen ähnlicher Typen erstellen, sodass Sie einen Typ mit einer Eigenschaft oder einem Konstruktorparameter vom Typ IList<IMathOperation> haben können . Setzen Sie diese Eigenschaft/Parameter in der Konfigurationsdatei, und Sie sollten gut gehen.

Die genauen Details hängen natürlich vom DI-Framework ab, das Sie verwenden möchten.

Verwandte Themen