/// <summary> /// Запускает выполнение запроса <paramref name="activityStartQuery"/> с указанными параметрами в новой задаче. /// </summary> /// <typeparam name="TResult">Тип результата операции.</typeparam> /// <param name="activityStartQuery">Запрос на поиск операции.</param> public static Task <Response <TResult> > Run <TResult>(this IRequestStart <IActivityBase <TResult> > activityStartQuery) { if (!(activityStartQuery is RequestBase)) { throw new InvalidOperationException("Некорректный тип запроса."); } var query2 = activityStartQuery as RequestBase; if (TraceStudio.Utils.Types.TypeHelpers.ExtractGenericInterface(query2.activityType, typeof(IActivityInstant <>)) != null) { return((Task <Response <TResult> >)InternalExecute(activityStartQuery, GetClientDispatcherMethod(() => RequestClientDispatcher.RunAndClose <IActivityInstant <TResult>, TResult>(dx => dx.ToString())), typeof(TResult))); } else if (TraceStudio.Utils.Types.TypeHelpers.ExtractGenericInterface(query2.activityType, typeof(IActivityLong <>)) != null) { return((Task <Response <TResult> >)InternalExecute(activityStartQuery, GetClientDispatcherMethod(() => RequestClientDispatcher.Run <IActivityLong <TResult>, TResult>(dx => dx.ToString())), typeof(TResult))); } else { throw new InvalidOperationException("Не удается опознать тип операции."); } }
/// <summary> /// Запускает выполнение запроса <paramref name="activityStartQuery"/> с указанными параметрами в новой задаче. /// </summary> /// <typeparam name="TResult">Тип результата операции.</typeparam> /// <typeparam name="TCallResult">Тип возвращаемого значения в методе дополнительного вызова.</typeparam> /// <param name="activityStartQuery">Запрос на поиск операции.</param> public static Task <Response <TResult, TCallResult> > Run <TResult, TCallResult>(this IRequestStart <IActivityInstant <TResult>, TCallResult> activityStartQuery) { return((Task <Response <TResult, TCallResult> >)InternalExecute(activityStartQuery, GetClientDispatcherMethod(() => RequestClientDispatcher.RunAndClose <IActivityInstant <TResult>, TResult, string>(dx => dx.ToString())), typeof(TResult), typeof(TCallResult))); }
/// <summary> /// Запускает выполнение запроса <paramref name="activityStartQuery"/> с указанными параметрами в новой задаче. /// </summary> /// <typeparam name="TResult">Тип результата операции.</typeparam> /// <typeparam name="TState">Тип состояния операции.</typeparam> /// <param name="activityStartQuery">Запрос на поиск операции.</param> public static Task <ResponseForLongState <TResult, TState> > Run <TResult, TState>(this IRequestStart <IActivityLong <TResult, TState> > activityStartQuery) { return((Task <ResponseForLongState <TResult, TState> >)InternalExecute(activityStartQuery, GetClientDispatcherMethod(() => RequestClientDispatcher.Run <IActivityLong <TResult, TState>, TResult, TState>(dx => dx.ToString())), typeof(TResult), typeof(TState))); }