Итак, у меня есть .NET-решение, которое использует StructureMap, и я хотел бы, чтобы StructureMap читал внешнюю сборку, которая реализует интерфейс из проекта в этом решении и определяет запись реестра для этого.StructureMap и сборки сканирования
конфигурация StructreMap для моего решения:
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();
});
});
Довольно просто, я говорю это, чтобы добавить сборку вызова и сборку из каталога в коллекцию сборок. Я отлаживал переменную сборки, и она действительно нашла все сборки (в том числе одну из каталога расширений).
В DLL проекта я создал отдельный от моего первоначального решения, у меня есть реализация интерфейса (я ссылаться на проект интерфейсов от моего первоначального решения), и написал очень простой реестр:
public class ProductMockRegistry : Registry
{
public ProductMockRegistry()
{
ForRequestedType<IProductRepository>().AddInstances(repository =>
{
repository.OfConcreteType<ProductMockRepository>();
});
}
}
Проблема, которая у меня есть, StructureMap не находит реестр во внешней DLL. Он находит DLL просто прекрасным, но когда я говорю об этом LookForRegistries, он не находит его.