Я новичок в Windsor и пытаюсь реализовать самую базовую конструкторскую инъекцию. По-видимому, API настолько изменился по сравнению с недавними версиями, что документация для текущей версии, похоже, предполагает, что вы уже знаете, как это сделать, а документация для старых версий устарела.Basic Windsor Constructor Injection
У меня есть простой тест компонент:
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");
}
}
И я хочу, чтобы как-то зарегистрировать свои типы с Виндзоре таким образом, что я могу получить обратно экземпляр 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));
Но это не удается с той же ошибкой «имеет зависимости, которые необходимо устранить».
Что я делаю неправильно?