Проблема с SystemWrapper и Castle Windsor - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь использовать SystemWrapper, чтобы иметь возможность имитировать файловый ввод-вывод и другие стандартные методы MS, для которых я писал свои собственные оболочки. Тем не менее, я обнаружил, что у Castle Windsor, IO C, который я использую, есть проблемы с ним.

Я специально работаю с IDirectoryInfo и DirectoryInfoWrap, которые его реализуют. Я зарегистрировался как любой другой интерфейс:

container.Register(Component.For<IDirectoryInfo, DirectoryInfoWrap>());

Я даже сделал так:

container.Register(Component.For<IDirectoryInfo>().ImplementedBy<DirectoryInfoWrap>());

Но когда я запускаю свое приложение, я получаю это:

Невозможно создать компонент 'SystemWrapper.IO.DirectoryInfoWrap', так как он имеет зависимости, которые должны быть удовлетворены.

'SystemWrapper.IO.DirectoryInfoWrap' ожидает следующие зависимости: - Служба 'System.IO.DirectoryInfo 'который не был зарегистрирован. - Параметр «путь», который не был указан. Вы забыли установить зависимость?

Это не имеет смысла для меня. Почему он думает, что обычный DIrectoryInfo - это «сервис», который нужно зарегистрировать? Для хихиканья я попытался зарегистрировать DirectoryInfo в DirectoryInfoWrap, но это дало мне следующее:

Типы System.IO.DirectoryInfo и SystemWrapper.IO.DirectoryInfoWrap не связаны. Это не разрешено. Вы уверены, что хотите сделать их обеими службами на одном компоненте? Имя параметра: x

Если кто-то работал до этого, пожалуйста, дайте мне знать. Если этого не произойдет, я просто продолжу писать обертки от руки.

Спасибо

1 Ответ

0 голосов
/ 04 марта 2020

Так что ответ был прост. Для конструктора System Wrap требуется параметр DirectoryInfo. Я никогда не имел дело с параметром конструктора в Виндзоре. После исследования, что это было решением:

Component.For<IDirectoryInfo, DirectoryInfoWrap>().DependsOn(Dependency.OnValue("directoryInfo", directoryInfo)
...