Автоматическая регистрация Castle Windsor от двух разных сборки?

StackOverflow https://stackoverflow.com/questions/2059537

  •  20-09-2019
  •  | 
  •  

Вопрос

    container.Register(
        AllTypes.Pick().FromAssembly(typeof (UserRepository).Assembly)
            .WithService.FirstInterface());

В настоящее время приведенный выше код будет работать нормально, если интерфейс также находится в той же сборке, но он взорвется, если iuserRepository будет из другой сборки.

Возможна ли регистрация авто из двух разных собраний? Я что -то здесь упускаю?

Это было полезно?

Решение

Да, можно определить автоматическую регистрацию, где интерфейс определяется в другой сборке. Мы делаем это, хотя мы используем немного другой синтаксис:

container.Register(AllTypes
    .FromAssemblyContaining<ConfigurationService>()
    .Where(t => t.Name.EndsWith("Service", StringComparison.Ordinal))
    .WithService
    .FirstInterface()
    .Configure(reg => reg.LifeStyle.PerWebRequest));

Я не могу сказать, что различное использование API имеет значение, но я бы предположил, что это не так. Скорее, я предполагаю, что причина ошибки, которую вы испытываете, заключается в том, что, возможно, сборка, содержащая интерфейс, недоступна.

Проверьте, может ли Fusion может загрузить тип из этого приложения вообще.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top