Estoy usando StructureMap, v. 2.5.3 y tengo problemas para encadenar implementaciones en una interfaz para implementar el patrón Decorator.StructureMap y el patrón de decorador
Estoy acostumbrado a Windsor, donde es posible nombrar variaciones en implementaciones de interfaz y enviar el nombre impl. en otro (predeterminado) impl.
Este es el valor predeterminado, versión no decorada, que funciona bien:
ObjectFactory.Initialize(registry =>
{
registry.ForRequestedType<ICommentService()
.TheDefault.Is.OfConcreteType<CommentService>();
... }
Esta es la ctor del decorador, que yo quiero llamar a:
public CommentAuditService(ICommentService commentService,
IAuditService auditService)
Esto funciona, pero lo hace no me da acceso al objeto decorado:
registry.ForRequestedType<ICommentService>()
.TheDefault.Is.OfConcreteType<CommentService>()
.EnrichWith(x => new CommentAuditService());
Esto me lleva int. inf. loop:
registry.ForRequestedType<ICommentService>()
.TheDefault.Is.OfConcreteType<CommentService>()
.EnrichWith(x => new CommentAuditService(new CommentService(),
new AuditService()));
Hasta el momento esto es lo que me parece debe trabajo:
registry.ForRequestedType<ICommentService.()
.TheDefault.Is.OfConcreteType<CommentAuditService>()
.WithCtorArg("commentService")
.EqualTo(new CommentService());
Sin embargo se envía en 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)
¡Ese es el boleto! Gracias Joshua – iammaz