StructureMap-> EnrichWith обогащает слишком много (другие экземпляры)

После поиска многих статей о работе с базами данных я выяснил следующее:

5
задан hdz 26 March 2009 в 20:18
поделиться

1 ответ

Не используйте TheDefaultIsConcreteType, прежде чем обогатят. Это точно так же, как сделало бы его правильно после ForRequestedType (), который говорит, что Вы хотите обогатить весь ICommands. Используйте TheDefault. OfConcreteType вместо этого.

Также не удваивайтесь, Обогащают, это не объединяет в цепочку хорошо при замене экземпляров. Следующее должно работать на Ваш сценарий:

    ForRequestedType<ICommand>()
        .CacheBy(StructureMap.Attributes.InstanceScope.Singleton)
        .TheDefault.Is.OfConcreteType<A>()
        .EnrichWith(x => new DecoratorTwo(new DecoratorOne(x)));
    InstanceOf<ICommand>().Is
        .OfConcreteType<B>()
        .EnrichWith(x => new DecoratorOne(x))
        .WithName("second");
    InstanceOf<ICommand>().Is
        .OfConcreteType<MultiCommand>()
        .TheArrayOf<ICommand>().Contains(y =>
        {
            y.TheDefault();
            y.TheInstanceNamed("second");
        })
        .WithName("multi");
4
ответ дан 15 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

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