StructureMap i wzór dekoratora

Używam StructureMap, v. 2.5.3 i mam problem z łączeniem implementacji na interfejsie w celu wdrożenia wzorca Decoratora.

Jestem przyzwyczajony do Windsor, gdzie można nazwać wariacje na temat implementacji interfejsu i wysłać nazwane impl. w inny (domyślnie) impl.

Jest to domyślna, nie ozdobiona wersja, która działa dobrze:

ObjectFactory.Initialize(registry =>
{
  registry.ForRequestedType<ICommentService()
    .TheDefault.Is.OfConcreteType<CommentService>();
... }

To jest ctor na dekoratorze, którego chcę zadzwonić:

public CommentAuditService( ICommentService commentService, 
                            IAuditService auditService )

To działa, ale nie daje mi dostępu do zdobionego obiektu:

registry.ForRequestedType<ICommentService>()
  .TheDefault.Is.OfConcreteType<CommentService>()
  .EnrichWith(x => new CommentAuditService());

To zabiera mi int inf. pętla:

registry.ForRequestedType<ICommentService>()
  .TheDefault.Is.OfConcreteType<CommentService>()
  .EnrichWith(x => new CommentAuditService( new CommentService(), 
                                            new AuditService()));

Jak na razie wydaje mi siępowinien praca:

registry.ForRequestedType<ICommentService.()
  .TheDefault.Is.OfConcreteType<CommentAuditService>()
  .WithCtorArg("commentService")
  .EqualTo(new CommentService());

Jednak wysyła go w nieskończoną pętlę tworzenia nowych instancji CommentAuditService

Czy ktoś ma szybką odpowiedź? (inne niż przejście na Castle.Windsor, którego jestem obecnie bardzo blisko)

questionAnswers(1)

yourAnswerToTheQuestion