StructureMap e o padrão de decorador

Eu estou usando StructureMap, v. 2.5.3 e estou tendo problemas com o encadeamento de implementações em uma interface para implementar o padrão Decorator.

Estou acostumado a Windsor, onde é possível nomear variações em implementações de interface e enviar o nome impl. em outro (padrão) impl.

Esta é a versão padrão não decorada, que funciona bem:

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

Este é o ctor no decorador, que eu quero chamar:

public CommentAuditService( ICommentService commentService, 
                            IAuditService auditService )

Isso funciona, mas não me dá acesso ao objeto decorado:

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

Isso me leva a um inf. loop:

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

Até agora isso é o que parece para mimdevemos trabalhos:

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

No entanto, enviá-lo em um loop infinito de criação de novas instâncias de CommentAuditService

Alguém tem uma resposta rápida? (diferente de mudar para o Castle.Windsor, que eu estou muito próximo no momento)

questionAnswers(1)

yourAnswerToTheQuestion