Frage

Kann jemand denken Sie an eine gute Lösung für die IOC in eine Konsolenanwendung zu bekommen?

Im Moment sind wir nur eine statische Klasse mit der folgenden Methode:

public static T Resolve<T>()
{
    return dependencyResolver.Resolve<T>();
}

Ich würde die Erfahrung gerne nahtlos sein, sondern kann aus einer Konsolenanwendung nicht denken Sie an einen Weg, dies zu erreichen.

War es hilfreich?

Lösung

Sie machen müssen, um irgendwo einen Dienst locater Anruf (Resolve<T>()). Der Trick ist, um es zu bekommen als Out-of-the-Art und Weise wie möglich. Für Konsolenanwendungen geschieht dies Bootstrapping im Main() Verfahren. Tun Sie es dort und diese Resolve Anrufe an anderer Stelle minimieren und Sie werden groß sein. Für die meisten Abhängigkeiten verwenden Konstruktor Injektion.

Andere Tipps

Konsolenanwendungen haben keine Beschränkung über eine Web- oder Formularanwendung für IoC. Sie können jede Ihrer Wahl (Spring, Ninject, Einheitlichkeit, etc.) verwenden. Die meisten von ihnen sind konfigurierbar mit XML-Datei außerhalb des Konsolenanwendung und einige wie Ninjector erfordern eine Konfiguration in Ihrer Anwendung.

Ich habe Spring.NET von einer Konsole App ohne Probleme verwendet. Sie müssen es nur in der Config-Datei zeigen, und es wird alle Abhängigkeiten anschließen. Was Sie dann tun mit diesen Objekten hängt davon ab, was die Konsole app, natürlich versucht, zu tun.

Zur Kasse Microsoft Unity .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top