2012-05-16 12 views
5

Al agregar el paquete StructureMap-MVC3 a una aplicación ASP.NET MVC, se agrega una clase que contiene un método IoCInitialize (que es llamado por algún código en la carpeta App_Start) que contiene los siguientes:Propósito de scan.TheCallingAssembly, scan.WithDefaultConventions en 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; 
    } 
} 

¿Cuál es el propósito del código scan.TheCallingAssembly() y scan.WithDefaultConventions()? No puedo ver una buena explicación de estos métodos en el StructureMap documentation.

Al usar StructureMap en un proyecto que no es MVC, he encontrado que toda la sección x.Scan se puede quitar sin ningún impacto.

Respuesta

7

El escaneo observa todos los tipos definidos en su Conjunto y aplica las convenciones de StructureMap para determinar si/cómo deben registrarse en el contenedor.

WithDefaultConventions significa: "Si durante la exploración de encuentro de una interfaz IExample, y hay un tipo que implementa ExampleIExample, a continuación, registrar Example como el tipo predeterminado para IExample".

En muchos casos, podrá solicitar al contenedor lo que esté buscando (IExample), y devolverá una implementación, sin ninguna configuración adicional.