Базовое внедрение конструктора Windsor

Я новичок в 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));

Но это не удается с той же ошибкой «имеет зависимости, которые необходимо разрешить».

Что я делаю неправильно?

0
задан Clever Human 10 May 2012 в 21:08
поделиться