コード例 #1
0
		CommandFilter(object target, MethodInfo mi, ExecuteFilter filter)
			: base(target, mi)
		{
			_filterProc = filter;

			foreach (CommandFilterAttribute a in mi.GetCustomAttributes(typeof(CommandFilterAttribute), true))
				_keys = a.Keys;

			if (_keys == null || _keys.Length == 0)
				_keys = DefaultKey;
		}
コード例 #2
0
        CommandFilter(object target, MethodInfo mi, ExecuteFilter filter)
            : base(target, mi)
        {
            _filterProc = filter;

            foreach (CommandFilterAttribute a in mi.GetCustomAttributes(typeof(CommandFilterAttribute), true))
            {
                _keys = a.Keys;
            }

            if (_keys == null || _keys.Length == 0)
            {
                _keys = DefaultKey;
            }
        }
コード例 #3
0
        public static bool TryCreate(object target, MethodInfo mi, out ICommand command)
        {
            command = null;
            ParameterInfo[] args = mi.GetParameters();
            if (args.Length == 3 &&
                args[0].ParameterType == typeof(ICommandInterpreter) &&
                args[1].ParameterType == typeof(ICommandChain) &&
                args[2].ParameterType == typeof(string[]))
            {
                ExecuteFilter filter = (ExecuteFilter)Delegate.CreateDelegate(typeof(ExecuteFilter), target is Type ? null : target, mi, false);
                if (filter != null)
                {
                    command = new CommandFilter(target, mi, filter);
                }
            }

            return(command != null);
        }