I spróbować ozdobić IProjectService ale nie mogę znaleźć dokumentację dla struturemapJak dekorować w strukturze?
For<IProjectService>().Use<ProjectServiceLogDecorator>();
For<IProjectService>().Use<ProjectService>()
.DecorateWith((context, decorator) =>
context.GetInstance<ProjectServiceLogDecorator>());
Co robię źle?
exeption: Wykryto
Dwukierunkowy związek zależność! Sprawdź StackTrace StructureMap poniżej: 1.) nowy ProjectServiceLogDecorator (domyślnej IRepository, domyślnej IUnitOfWork, domyślnej IProjectService, domyślnej IPrincipal, domyślnej AuditEventLogger) 2.) Project. Services.Projects.ProjectServiceLogDecorator 3) Instancja Project.Services.Projects.ProjectServiceLogDecorator 4) FuncInterceptor z Project.Services.Projects.IProjectService: IContext.GetInstance() 5.) Project.Services.Projects.ProjectService 6 .) Instanc E Project.Services.Projects.IProjectService (Project.Services.Projects.ProjectService) 7) New UsersController (Domyślna IUserService, Domyślna IService, Domyślna IUserNotificationService, Domyślna IService, domyślna IProjectService, domyślna ILicenseGroupService) 8) Project.Web.Api.Controllers.UsersController 9) Instancja Project.Web.Api.Controllers.UsersController 10) Container.GetInstance (projekt. Web.Api.Controllers.UsersController)
Znalazłem rozwiązanie, ale jest obrzydliwie:
For<IProjectService>().Use<ProjectService>().DecorateWith((ctx, service) =>
new ProjectServiceLogDecorator(
ctx.GetInstance<IRepository<Project>>(),
ctx.GetInstance<IUnitOfWork>(),
service,
ctx.GetInstance<ILicenseService>(),
ctx.GetInstance<IPrincipal>(),
ctx.GetInstance<AuditEventLogger>()
)
);
Myślę, że potrzebujesz 'DecorateAllWith'. Powiązane: https://stackoverflow.com/questions/25134096/structuremap3-decorateallw – Steven
Potrzebuję jeden do jednego – Mediator