2009-02-03 18 views
7

Tengo una solución .NET que usa StructureMap y me gustaría que StructureMap lea un ensamblaje externo que implemente una interfaz de un proyecto en esa solución y defina la entrada de registro para él.StructureMap y conjuntos de escaneo

configuración StructreMap para mi solución:

ObjectFactory.Initialize(registry => 
{ 
    registry.Scan(assembly => 
    { 
    assembly.TheCallingAssembly(); 

    //Telling StructureMap to sweep a folder called "extensions" directly 
    //underneath the application root folder for any assemblies found in that folder 
    assembly.AssembliesFromPath("extensions", addedAssembly => addedAssembly.GetName().Name.ToLower().Contains("extension")); 

    //Direct StructureMap to add any Registries that it finds in these assemblies, assuming that all the StructureMap directives are 
    //contained in registry classes 
    assembly.LookForRegistries(); 
    }); 
}); 

Bastante sencillo, lo cuento a agregar el ensamblado que llama y el montaje de un directorio a la colección asambleas. He depurado la variable ensamblados y, de hecho, ha encontrado todos los ensamblajes (incluido el del directorio de extensiones).

En un proyecto DLL He creado separada de mi solución original, tengo una implementación de una interfaz (he referido al proyecto de interfaces de mi solución original), y escrito un registro muy simple:

public class ProductMockRegistry : Registry 
{ 
    public ProductMockRegistry() 
    { 
     ForRequestedType<IProductRepository>().AddInstances(repository => 
     { 
      repository.OfConcreteType<ProductMockRepository>(); 
     }); 
    } 
} 

El problema que tengo es que StructureMap no encuentra el registro en la DLL externa. Encuentra la DLL bien, pero cuando se lo digo a LookForRegistries, no lo encuentra.

Respuesta

Cuestiones relacionadas