2012-05-16 5 views
5

Beim Hinzufügen des StructureMap-MVC3 Paket an eine Anwendung ASP.NET MVC, eine IoC Klasse eine Initialize Methode enthält, hinzugefügt wird (das wird von einigem Code in dem App_Start Ordner namens) mit folgendem Inhalt:Zweck der scan.TheCallingAssembly, scan.WithDefaultConventions in StructureMap-MVC3

public static class IoC 
{ 
    public static IContainer Initialize() 
    { 
     ObjectFactory.Initialize(x => 
      { 
       x.Scan(scan => 
        { 
         scan.TheCallingAssembly(); 
         scan.WithDefaultConventions(); 
        }); 
       // x.For<IExample>().Use<Example>(); 
      }); 
     return ObjectFactory.Container; 
    } 
} 

Was ist der Zweck des scan.TheCallingAssembly() und scan.WithDefaultConventions() Code ist? Ich kann keine gute Erklärung dieser Methoden in der StructureMap documentation sehen.

Bei der Verwendung von StructureMap in einem Nicht-MVC-Projekt habe ich festgestellt, dass der gesamte Abschnitt x.Scan ohne Auswirkungen entfernt werden kann.

Antwort

7

Beim Scannen werden alle in Ihrer Assembly definierten Typen betrachtet und ConstructionMap-Konventionen angewendet, um zu bestimmen, ob/wie sie im Container registriert werden sollen.

WithDefaultConventions bedeutet: „Wenn während des Scannens ich eine Schnittstelle IExample finden und es gibt eine Art Example die IExample implementiert, dann Example als für IExample Standardtyp registrieren“.

In vielen Fällen können Sie den Container nach dem fragen, was Sie suchen (IExample), und es wird eine Implementierung ohne weitere Konfiguration zurückgegeben.