2017-01-08 1 views
-2

Ich habe immer C# -Schnittstellen verwendet, um eine Inversion der Kontrolle zu erreichen. Aber dann habe ich diesen Artikel gefunden, der eine Reihe von IoC-Containern vergleicht. Was ist der Unterschied zwischen diesen Containern und einer C# -Schnittstelle?C# IoC-Container

http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison

+0

Eine [Schnittstelle] (https://msdn.microsoft.com/en-us/library/87d83y5b.aspx) ist wie ein Vertrag für Ihren Code und ein IoC-Container invertiert die Kontrolle der Abhängigkeitsverwaltung in einer Anwendung. Sie können nicht direkt verglichen werden, da sie keine ähnlichen Konstrukte sind. – Carson

+0

Es ist wie verschiedene Arten von Bibliotheken, die das gleiche tun, aber auf andere Weise und bieten unterschiedliche API, aber das Kernkonzept ist immer noch das gleiche. –

Antwort

1

Sie machen einen falschen Vergleich. Abstraktionen sind Voraussetzung für die Anwendung Dependency Injection und entsprechen der Dependency Inversion Principle. Wenn Sie DI ohne Hilfe eines Containers anwenden, üben Sie Pure DI. Pure DI ist eine gültige Praxis.

Wenn eine Anwendung wächst, kann die Verwendung von Containern sehr praktisch werden, da sie Convention over Configuration ermöglichen, Objektgraphen zu verdrahten. Wenn Sie einen DI-Container verwenden, müssen Sie weiterhin Abstraktionen verwenden.

Um mehr darüber zu erfahren, wann und warum Sie einen DI-Container verwenden sollten, lesen Sie this und this.

+0

Es sieht so aus, als hätte ich Pure DI geübt. Danke für die Erklärung und die Artikellinks. – shoefly