public async Task <UiFlowContextData> Get(string flowHandler) { using (_profiler.RecordStep("UiFlowContext-LoadByFlowHandler")) { flowHandler = flowHandler.ToLowerInvariant(); try { return(await Store.GetOrAdd(flowHandler, async k => { var contextData = await _decoratedRepository.LoadByFlowHandler(k); contextData.SetRepository(this); foreach (var metadata in contextData.ViewModels.Values) { //TODO:REVIEW THIS CASTING metadata.UserData.Metadata = metadata; } return contextData; })); } catch (Exception ex) { throw new KeyNotFoundException(flowHandler, ex); } } }
public void Intercept(IInvocation invocation) { var stepId = $"{invocation.TargetType.Name}.{invocation.Method.Name}"; Logger.Trace(() => $"{stepId} - START"); using (_profiler.RecordStep(stepId)) { invocation.Proceed(); var type = invocation.ReturnValue?.GetType(); if (type != null && (type == typeof(Task) || type.ImplementsOpenGeneric(typeof(Task <>)))) { invocation.ReturnValue = InterceptAsync((dynamic)invocation.ReturnValue); } } Logger.Trace(() => $"{stepId} - END"); }