Domanda

Quindi, ho una soluzione .NET che utilizza StructureMap, e mi piacerebbe avere StructureMap leggere un assembly esterno che implementa un'interfaccia da un progetto in tale soluzione e definisce la voce del Registro per esso.

Configurazione StructreMap per la mia soluzione:

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

piuttosto semplice, lo dico per aggiungere l'assembly chiamante ed il gruppo da una directory alla raccolta assemblee. Ho il debug assemblee variabile e ha infatti trovato tutti i gruppi (tra cui quello della directory delle estensioni).

In un progetto DLL ho creato separato dalla mia soluzione originale, ho un'implementazione di un'interfaccia (ho fatto riferimento al progetto interfacce dalla mia soluzione originale), e scritto un semplice registro:

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

Il problema che ho è, StructureMap non trova il Registro di sistema nella DLL esterna. Essa trova la DLL bene, ma quando ho lo dico a LookForRegistries, esso non lo trova.

È stato utile?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top