Używam StructureMap, v. 2.5.3 i mam problemy z łączeniem ze sobą implementacji interfejsu w celu implementacji wzorca dekoratora.StructureMap i wzór dekoratora
Jestem przyzwyczajony do Windsor, gdzie możliwe jest nadanie nazw wersjom implementacji interfejsu i wysłanie nazwanego imp. do innego (domyślnie) imp.
Jest to ustawienie domyślne, nie wersja urządzone, który działa dobrze:
ObjectFactory.Initialize(registry =>
{
registry.ForRequestedType<ICommentService()
.TheDefault.Is.OfConcreteType<CommentService>();
... }
Jest to konstruktor na dekoratora, który chcę zadzwonić:
public CommentAuditService(ICommentService commentService,
IAuditService auditService)
To działa, ale nie nie daje mi dostępu do udekorowanego obiektu:
registry.ForRequestedType<ICommentService>()
.TheDefault.Is.OfConcreteType<CommentService>()
.EnrichWith(x => new CommentAuditService());
To zajmie mi int inf. Pętla:
registry.ForRequestedType<ICommentService>()
.TheDefault.Is.OfConcreteType<CommentService>()
.EnrichWith(x => new CommentAuditService(new CommentService(),
new AuditService()));
Jak dotąd jest to, co wydaje mi się powinien praca:
registry.ForRequestedType<ICommentService.()
.TheDefault.Is.OfConcreteType<CommentAuditService>()
.WithCtorArg("commentService")
.EqualTo(new CommentService());
jednak wysłać go do nieskończonej pętli tworzenia nowych instancji CommentAuditService
Czy ktoś ma szybka odpowiedź? (inne niż przejście do Castle.Windsor, które obecnie jest mi bliskie)
To jest bilet! Dzięki Joshua – iammaz