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)