예제 #1
0
        /// <summary>
        /// Implements the <see cref="object.GetHashCode"/> and <see cref="object.Equals(object)"/>
        /// methods.
        /// </summary>
        public IMethodReturn Execute(IMethodInvocation invocation, ExecuteHandler next)
        {
            if (invocation.MethodBase.Name == nameof(GetHashCode))
            {
                return(invocation.CreateValueReturn(RuntimeHelpers.GetHashCode(invocation.Target), invocation.Arguments));
            }
            if (invocation.MethodBase.Name == nameof(Equals))
            {
                return(invocation.CreateValueReturn(ReferenceEquals(invocation.Target, invocation.Arguments.GetValue(0)), invocation.Arguments));
            }

            return(next.Invoke(invocation, next));
        }
예제 #2
0
        /// <summary>
        /// 执行自定义的操作,返回REST结果集
        /// </summary>
        /// <typeparam name="TReturn">REST结果集中代表结果主体的数据类型</typeparam>
        /// <param name="executeFunc">自定义操作,该参数是一个委托</param>
        /// <param name="Arguments">执行自定义操作时所需的参数列表</param>
        /// <returns>返回处理后的REST结果集</returns>
        public virtual Result <TReturn> Execute <TReturn>(ExecuteHandler <TContext, TReturn> executeFunc, IDictionary <string, object> Arguments)
        {
            this.SetHttpStatusCodeOK();

            Result <TReturn> result = CreateResult <TReturn>();

            try
            {
                TContext context = this.EntityContext;
                if (executeFunc != null)
                {
                    result.Results = executeFunc.Invoke(context, Arguments);
                }
            }
            catch (Exception ex)
            {
                string message = string.Empty;
                if (ex.InnerException != null)
                {
                    message = ex.InnerException.Message;
                }
                else
                {
                    message = ex.Message;
                }
                result.UpdateToError(message);
            }
            finally
            {
                if (this._context != null)
                {
                    this._context.Dispose();
                }
            }

            return(result);
        }
예제 #3
0
 /// <summary>Вызов выполняющего метода команды</summary>
 /// <param name="parameter">Параметр команды</param>
 public void Execute(object parameter) => _onExecute?.Invoke(parameter);
예제 #4
0
 /// <inheritdoc />
 public IMethodReturn CreateInvokeReturn(IArgumentCollection?arguments = null)
 => implementation.Invoke(arguments == null ? this : new MethodInvocation(Target, MethodBase, arguments),
                          (m, n) => throw new NotSupportedException(ThisAssembly.Strings.GetNextNotSupported));
예제 #5
0
 public void Execute(object parameter) => ExecuteHandler?.Invoke(parameter);
예제 #6
0
 public void Execute(object parameter)
 {
     ExecuteHandler?.Invoke((TParam)parameter);
 }
 /// <inheritdoc cref="ICommand.Execute(object)"/>
 public void Execute(object parameter)
 {
     execute?.Invoke(parameter);
 }