public DirectMethod(MethodBase method) {
            var actionNameAttr = method.GetAttribute<ActionNameAttribute>();
            Name = actionNameAttr != null ? actionNameAttr.Name : method.Name;

            var directEventAttr = method.GetAttribute<DirectEventAttribute>();
            EventName = directEventAttr != null ? directEventAttr.Name : null;

            var useNamedArgsAttr = method.GetAttribute<NamedArgumentsAttribute>();
            if (useNamedArgsAttr == null) {
                Len = method.GetParameters().Length;
            } else {
                var parameterInfos = method.GetParameters();
                Params = new string[parameterInfos.Length];
                for (int i = 0; i < parameterInfos.Length; i++) {
                    Params[i] = parameterInfos[i].Name;
                }
            }

            IsFormHandler = method.HasAttribute<FormHandlerAttribute>();
            UsesNamedArguments = method.HasAttribute<NamedArgumentsAttribute>();
        }