Автоматическая регистрация Castle Windsor от двух разных сборки?
-
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 может загрузить тип из этого приложения вообще.