예제 #1
0
 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);
         }
     }
 }
예제 #2
0
        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");
        }