Question

Alors, j'ai une solution .NET qui utilise StructureMap, et je voudrais avoir StructureMap lire un assemblage extérieur qui implémente une interface d'un projet dans cette solution et définit l'entrée de Registre pour elle.

configuration StructreMap pour ma solution:

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

Assez simple, je le dis d'ajouter l'assemblage d'appel et l'assemblage d'un répertoire à la collection des ensembles. J'ai débogués les assemblées variables et il a en effet trouvé toutes les assemblées (y compris celui du répertoire des extensions).

Dans un projet DLL J'ai créé séparé de ma solution originale, j'ai une implémentation d'une interface (je l'ai mentionné le projet d'interfaces de ma solution originale), et écrit un registre très simple:

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

Le problème que j'ai est, StructureMap ne trouve pas le registre dans la DLL externe. Il trouve la DLL très bien, mais quand je dis à LookForRegistries, il ne trouve pas.

Était-ce utile?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top