Я стараюсь это украсить IProjectService, но я не могу найти документацию для struturemapКак украсить в структуре карту?
For<IProjectService>().Use<ProjectServiceLogDecorator>();
For<IProjectService>().Use<ProjectService>()
.DecorateWith((context, decorator) =>
context.GetInstance<ProjectServiceLogDecorator>());
Что я делаю не так?
Exeption: обнаружена связь
Двунаправленный зависимость! Проверьте StructureMap StackTrace ниже: 1.) новый ProjectServiceLogDecorator (По умолчанию из IRepository, По умолчанию из IUnitOfWork, По умолчанию из IProjectService, По умолчанию из IPrincipal, По умолчанию из AuditEventLogger) 2.) проекта. Services.Projects.ProjectServiceLogDecorator 3.) Экземпляр Project.Services.Projects.ProjectServiceLogDecorator 4.) FuncInterceptor из Project.Services.Projects.IProjectService: IContext.GetInstance() 5.) Project.Services.Projects.ProjectService 6 .) Instanc е Project.Services.Projects.IProjectService (Project.Services.Projects.ProjectService) 7.) новый UsersController (Дефолт IUserService, Дефолт IService, Дефолт IUserNotificationService, Дефолт IService, Дефолт IProjectService, Дефолт ILicenseGroupService) 8.) Project.Web.Api.Controllers.UsersController 9.) инстанции Project.Web.Api.Controllers.UsersController 10.) Container.GetInstance (Project. Web.Api.Controllers.UsersController)
Я нашел решение, но это мерзко:
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>()
)
);
Я думаю, вам нужно 'DecorateAllWith'. Связано это: https://stackoverflow.com/questions/25134096/structuremap3-decorateallwith – Steven
Мне нужен один к одному – Mediator