StructureMap y el patrón decorador.

Estoy usando StructureMap, v. 2.5.3 y estoy teniendo problemas para encadenar implementaciones en una interfaz para implementar el patrón Decorator.

Estoy acostumbrado a Windsor, donde es posible nombrar variaciones en las implementaciones de la interfaz y enviar el impl nombrado. en otra implícita (por defecto).

Esta es la versión predeterminada, no decorada, que funciona bien:

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

Este es el ctor en el decorador, al que quiero llamar:

public CommentAuditService( ICommentService commentService, 
                            IAuditService auditService )

Esto funciona, pero no me da acceso al objeto decorado:

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

Esto me lleva a un inf. lazo:

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

De momento esto es lo que me parece.debería trabajo:

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

Sin embargo, lo envía a un bucle sin fin de crear nuevas instancias de CommentAuditService

¿Alguien tiene una respuesta rápida? (aparte de cambiar a Castle.Windsor, que estoy muy cerca en este momento)

Respuestas a la pregunta(1)

Su respuesta a la pregunta