public CommandExecutingEventArgs(CommandContextBase context, bool cancel = false)
		{
			if(context != null)
			{
				_context = context;
				_parameter = context.Parameter;
				_extendedProperties = context.HasExtendedProperties ? context.ExtendedProperties : null;
				_result = context.Result;
			}

			_cancel = cancel;
		}
		public CommandExecutedEventArgs(CommandContextBase context, Exception exception = null)
		{
			if(context != null)
			{
				_context = context;
				_parameter = context.Parameter;
				_result = context.Result;
				_extendedProperties = context.HasExtendedProperties ? context.ExtendedProperties : null;
			}

			_exception = exception;
		}
        public CommandExecutedEventArgs(CommandContextBase context, Exception exception = null)
        {
            if (context != null)
            {
                _context            = context;
                _parameter          = context.Parameter;
                _result             = context.Result;
                _extendedProperties = context.HasExtendedProperties ? context.ExtendedProperties : null;
            }

            _exception = exception;
        }
        public CommandExecutingEventArgs(CommandContextBase context, bool cancel = false)
        {
            if (context != null)
            {
                _context            = context;
                _parameter          = context.Parameter;
                _extendedProperties = context.HasExtendedProperties ? context.ExtendedProperties : null;
                _result             = context.Result;
            }

            _cancel = cancel;
        }
		/// <summary>
		/// 构造一个命令执行成功的事件参数对象。
		/// </summary>
		/// <param name="parameter">命令执行参数对象。</param>
		/// <param name="result">命令执行的结果。</param>
		/// <param name="extendedProperties">指定的扩展属性集。</param>
		public CommandExecutedEventArgs(object parameter, object result, IDictionary<string, object> extendedProperties = null)
		{
			var context = parameter as CommandContextBase;

			if(context != null)
			{
				_context = context;
				_parameter = context.Parameter;
				_result = result ?? context.Result;
				_extendedProperties = extendedProperties ?? (context.HasExtendedProperties ? context.ExtendedProperties : null);
			}
			else
			{
				_parameter = parameter;
				_result = result;
				_extendedProperties = extendedProperties;
			}
		}
        /// <summary>
        /// 构造一个命令执行失败的事件参数对象。
        /// </summary>
        /// <param name="parameter">命令执行参数对象。</param>
        /// <param name="exception">命令执行失败的异常对象。</param>
        /// <param name="extendedProperties">指定的扩展属性集。</param>
        public CommandExecutedEventArgs(object parameter, Exception exception, IDictionary <string, object> extendedProperties = null)
        {
            var context = parameter as CommandContextBase;

            if (context != null)
            {
                _context            = context;
                _parameter          = context.Parameter;
                _extendedProperties = extendedProperties ?? (context.HasExtendedProperties ? context.ExtendedProperties : null);
            }
            else
            {
                _parameter          = parameter;
                _extendedProperties = extendedProperties;
            }

            _exception = exception;
        }
		public CommandExecutingEventArgs(object parameter, IDictionary<string, object> extendedProperties, bool cancel = false)
		{
			var context = parameter as CommandContextBase;

			if(context != null)
			{
				_context = context;
				_parameter = context.Parameter;
				_extendedProperties = context.HasExtendedProperties ? context.ExtendedProperties : null;
				_result = context.Result;
			}
			else
			{
				_parameter = parameter;
				_extendedProperties = extendedProperties;
			}

			_cancel = cancel;
		}
        public CommandExecutingEventArgs(object parameter, IDictionary <string, object> extendedProperties, bool cancel = false)
        {
            var context = parameter as CommandContextBase;

            if (context != null)
            {
                _context            = context;
                _parameter          = context.Parameter;
                _extendedProperties = context.HasExtendedProperties ? context.ExtendedProperties : null;
                _result             = context.Result;
            }
            else
            {
                _parameter          = parameter;
                _extendedProperties = extendedProperties;
            }

            _cancel = cancel;
        }