Виндзорский замок не может разрешить какие-либо типы после регистрации их Ассамблеей.
Я пытаюсь реализовать службу, которая сканирует текущую библиотеку для всех расширений '.ddl', а затем регистрирует их с помощью сборки в Castle Windsor, но когда я пытаюсь разрешить, выдается исключение с сообщением: 'Нет компонента для поддержки службы' . Если я прохожу через Kernel.GetAssignableHandlers, я вижу, что все типы зарегистрированы.
1. получить корневое имя сборки:
var delimiterIndex = assembly.FullName.IndexOfAny(new[] { '.' });
2. Получить все сборки в виде массива
return Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.*", SearchOption.AllDirectories)
.Where(x => Path.GetExtension(x).Equals(".dll", StringComparison.InvariantCultureIgnoreCase))
.Where(x => Path.GetFileName(x)
.StartsWith(rootAssemblyName, StringComparison.InvariantCultureIgnoreCase)).Select(Assembly.LoadFile).ToArray();
3. Зарегистрируйте каждую сборку в контейнере Виндзорского замка
Classes.FromAssembly(assembly).Pick().WithServiceBase().WithServiceAllInterfaces().WithServiceSelf().LifestyleTransient()
4. Разрешить
var instance = _container.Resolve<IFoo>();
При разрешении исключения ComponentNotFoundException выдается сообщение:
'Компонент для поддержки сервиса Mes.Utils.DBUpgrade.IDBUpgrader не найден'
IDBUpgrader, который не зарегистрирован? Можете ли вы разрешить другие типы из сборки? - person Scott Hannen   schedule 17.04.2019