2009-02-03 8 views
7

Also, ich habe eine .NET-Lösung, die StructureMap verwendet, und ich möchte StructureMap eine externe Assembly lesen, die eine Schnittstelle aus einem Projekt in dieser Lösung implementiert und den Registrierungseintrag dafür definiert.StructureMap und Scan Assemblies

StructreMap Konfiguration für meine Lösung:

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(); 
    }); 
}); 

Ziemlich einfach, ich kann es sagen, die anrufende Montage und die Baugruppe aus einem Verzeichnis der Baugruppen Sammlung hinzuzufügen. Ich habe die Assembly-Variable debuggt und es hat tatsächlich alle Assemblys gefunden (einschließlich des Assignment-Verzeichnisses).

In einem DLL-Projekt ich getrennt von meiner ursprünglichen Lösung erstellt haben, ich eine Implementierung einer Schnittstelle (ich habe das Schnittstellen-Projekt von meiner ursprünglichen Lösung bezeichnet), und eine sehr einfache Registrierung geschrieben:

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

Das Problem, das ich habe, ist, StructureMap findet die Registrierung in der externen DLL nicht. Es findet die DLL gut, aber wenn ich es LookForRegistries sage, findet es es nicht.

Antwort