Я создаю инфраструктуру REST, и мне интересно, можно ли предоставить доступ поставщику услуг, поскольку он будет использоваться на фабрике. У меня есть общий сервис, который имеет события, которые запускаются при создании и обновлении
public event Func<object, TDTO, Task> CreateEvent;
protected virtual async Task OnCreated(TDTO dto)
{
await ServiceEventHandlerRule.OnServiceEvent(CreateEvent, this, dto);
}
public async Task<TDTO> Create(TDTO dto)
{
var entity = this.DtoToEntity(dto, new TEntity());
this._context.Set<TEntity>().Add(entity);
dto = await this.SaveEntity(entity);
await OnCreated(dto);
return dto;
}
Я регистрирую события на своих устройствах на фабрике, в настоящее время я выставляю Func<IServiceProvider, Object, TDto>
Регистрация событий выглядит так, это происходит в моем автозагрузке. Ccs:
var serviceConfig = new ServiceConfiuration<User, UserDTO>();
serviceConfig.EventMapping.AddCreateEvent(async (sp, obj, dto) => {
var hubTaskQueue = sp.GetService<IHubServiceTaskQueue>();
hubTaskQueue.QueueCreate<THub, TDTO>(dto);
});
services.AddScopedRestService(serviceConfig);
Пользователям потребуется доступ к нескольким дополнительным зависимостям для их событий, поэтому я предоставил им доступ к IServiceProvider
,
В чем недостаток использования шаблона расположения службы при регистрации?
Должен ли я замаскировать IServiceProvider и сделать несколько общих перегрузок, которые автоматически разрешат их зависимости?