StructureMap и сканирование сборок - PullRequest
8 голосов
/ 03 февраля 2009

Итак, у меня есть решение .NET, которое использует 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, он не находит ее.

1 Ответ

3 голосов
/ 02 июня 2009
...