2012-06-17 12 views
5

Ich bin gerade dabei, mit Unity zu beginnen. Ich frage mich immer noch, was seine Vorteile sind.Was ist der Vorteil von UnityContainer.Resolve gegenüber Activator.CreateInstance?

UnityContainer().Resolve<T>(), die eine konkrete Instanz des Typs zurückgeben kann, der für den generischen Typ T registriert ist.

Ich denke, ich kann auch Activator.CreateInstance<T>() verwenden.

Activator ist eine integrierte Klasse in .NET Framework, also frage ich mich, was das eindeutige Feature für Unity ist?

+4

Lesen Sie ein beliebiges Tutorial zur Abhängigkeitsinjektion, und Sie erhalten Ihre Antwort ... –

+4

Activator.CreateInstance ist außerdem * langsam * und kann keine Schnittstellen zu konkreten Typen zuordnen. Es ist nutzlos für die Abhängigkeitsinjektion –

Antwort

4

MSDN Staaten diese wie die Vorteile der Einheit Container:

  1. Vereinfachtes Objekterzeugung, insbesondere für die hierarchische Objektstrukturen und Abhängigkeiten
  2. Abstraction von Anforderungen; So können Entwickler Abhängigkeiten zur Laufzeit oder in der Konfiguration angeben und die Verwaltung von Querschneidereien vereinfachen
  3. Erhöhte Flexibilität durch Zurückstellen der Komponentenkonfiguration in den Container
  4. Service Location Capability; Dies ermöglicht Clients, den Container zu speichern oder zwischenzuspeichern
  5. Instanz und Typ Interception.

Hier ist die link.