public void SaveExtendedStage(IUnitOfWork uow, ExtendedStage extendedStage, IObjectSaver<ExtendedStage> stageSaver) { if (extendedStage.Extender != null) { var extenderType = extendedStage.Extender.GetType().GetBaseObjectType(); var exStageService = _serviceResolver.GetObjectService(extenderType); if (exStageService.GetType().GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IStageExtenderService<>))) { var createMethod = stageSaver.GetType().GetMethod("Create").MakeGenericMethod(extenderType); var extenderSaver = createMethod.Invoke(stageSaver, new[] { extendedStage.Extender, null }); var saveMethod = exStageService.GetType().GetMethod("ExternalSave"); if (saveMethod != null) saveMethod.Invoke(exStageService, new[] { uow, extenderSaver }); } } }
public void OnLeaveFromExtendedStage(ISecurityUser securityUser, ExtendedStage extendedStage, BaseObject baseObject) { var service = GetExtenderService(extendedStage); service.OnStageLeave(securityUser, extendedStage, extendedStage.Extender, baseObject); }
private IStageExtenderService GetExtenderService(ExtendedStage extendedStage) { if (extendedStage.Extender != null) { var extenderService = _serviceResolver.GetObjectService(extendedStage.Extender.GetType().GetBaseObjectType()) as IStageExtenderService; if (extenderService != null) return extenderService; } throw new Exception("Extender service not founded"); }
public void OnEnterToExtendedStage(ISecurityUser securityUser, ExtendedStage extendedStage, BaseObject baseObject) { var service = GetExtenderService(extendedStage); service.OnStageEnter(securityUser, extendedStage, extendedStage.Extender, baseObject); }