Могут замки виндзорский контейнер возвращать тот же экземпляр компонента, реализовывая 2 интерфейса

Вы, вероятно, захотите изучить Мозаики .

РЕДАКТИРОВАНИЕ: На связанной ноте к мозаикам Вы могли бы хотеть изучить Struts. Это не то, что Вы ищете (это - мозаики), но это полезно для кого-то приезжающего от Django.

5
задан GraemeF 11 February 2011 в 12:19
поделиться

2 ответа

[TestFixture]
public class Forwarding {
    public interface InterfaceA {}

    public interface InterfaceB {}

    public class ClassAB: InterfaceA, InterfaceB {}

    [Test]
    public void tt() {
        var container = new WindsorContainer();
        container.Register(Component.For<InterfaceA, InterfaceB>().ImplementedBy<ClassAB>());
        var a = container.Resolve<InterfaceA>();
        var b = container.Resolve<InterfaceB>();
        Assert.AreSame(a, b);
    }
}
11
ответ дан 13 December 2019 в 05:39
поделиться

Я знаю одно решение - это можно сделать так:

var someInstance = new Instance();
var container = new WindsorContainer();

container.Register(Component.For(typeof(IFirstInterface)).Instance(someInstance));
container.Register(Component.For(typeof(ISecondInterface)).Instance(someInstance));

... но тогда вы теряете способность контейнера создавать экземпляр класса Instance , поэтому его зависимости не будут разрешены автоматически. Конечно, если у вашего экземпляра нет зависимостей, вам это, вероятно, наплевать.

1
ответ дан 13 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: