public IInvokable RegisterInvokable(InvokableInfo info, MethodInfo methodInfo, object instance = null)
        {
            IInvokable invokable = InvokableFactory.MakeInvokable(info, methodInfo, instance);

            RegisterInvokable(invokable);
            return(invokable);
        }
        public IInvokable RegisterInvokable(InvokableInfo info, EventInfo eventInfo, object instance = null)
        {
            IInvokable invokable = InvokableFactory.MakeInvokable(info, eventInfo, instance);

            RegisterInvokable(invokable);
            return(invokable);
        }
        public IInvokable RegisterInvokable(InvokableInfo info, Delegate del)
        {
            IInvokable invokable = InvokableFactory.MakeInvokable(info, del);

            RegisterInvokable(invokable);
            return(invokable);
        }
        public void ProcessAttribute(InvokableAttribute input, MemberInfo memberInfo, IBoundInstance instance = null)
        {
            IInvokable invokable = null;

            if (memberInfo.MemberType == MemberTypes.Method)
            {
                MethodInfo methodInfo = (MethodInfo)memberInfo;
                invokable = InvokableFactory.MakeInvokable(input, methodInfo, instance);
            }
            else
            {
                if (memberInfo.MemberType != MemberTypes.Event)
                {
                    throw new ProcessorException("InvokableProcessor cannot process non MethodInfo or EventInfo types");
                }
                EventInfo eventInfo = (EventInfo)memberInfo;
                invokable = InvokableFactory.MakeInvokable(input, eventInfo, instance);
            }
            if (invokable != null)
            {
                ProvideResult(invokable);
            }
        }