Я новичок в Windsor и пытаюсь реализовать самую простую инъекцию конструктора. По-видимому, API настолько сильно изменился по сравнению с последними версиями, что документация для текущей версии, похоже, предполагает, что вы уже знаете, как это сделать, а документация для старых версий устарела.
У меня есть простой тестовый компонент:
public class ConstructorInjectedComponent
{
public IMyComponent Component { get; set; }
public ConstructorInjectedComponent(IMyComponent component)
{
Component = component;
}
}
Существует простая реализация IMyComponent:
public class AMyComponent : IMyComponent
{
public string Name { get; set; }
public AMyComponent()
{
Name = Guid.NewGuid().ToString("N");
}
}
И я хочу каким-то образом зарегистрировать свои типы в Windsor, чтобы я мог вернуть экземпляр ConstructorInjectedComponent, который содержит экземпляр его зависимость: IMyComponent.
Я зарегистрировал AMyComponent следующим образом:
_container.Register(Component.For(typeof(AMyComponent)));
Я зарегистрировал ConstructorInjectedComponent следующим образом:
_container.Register(Component.For(typeof(ConstructorInjectedComponent)));
и попытался разрешить его с помощью
_container.Resolve(typeof(ConstructorInjectedComponent));
Но это не удалось с сообщением «невозможно создать компонент ConstructorInjectedComponent, поскольку он имеет зависимости, которые должны быть удовлетворены.
поэтому я пытаюсь передать IDictionary зависимостей для ConstructorInjectedComponent ... и здесь документация меня подводит.
Я понятия не имею, как определить этот словарь. Я не могу найти документация, которая объясняет это. Я пробовал это:
var d = new Dictionary<string, string>() {{"IMyComponent", "AMyComponent"}};
_container.Register(Component.For(typeof(ConstructorInjectedComponent))
.DependsOn(dependencies));
Но это не удается с той же ошибкой «имеет зависимости, которые необходимо разрешить».
Что я делаю неправильно?