Example #1
0
        public override DispatchResult Invoke(
			int id, 
			uint lcid, 
			DispatchFlags wFlags, 
			object[] args, 
			out System.Runtime.InteropServices.ComTypes.EXCEPINFO pExcepInfo, 
			out uint puArgErr,
			out object ret)
        {
            pExcepInfo = new System.Runtime.InteropServices.ComTypes.EXCEPINFO();
            puArgErr = 0;
            ret = this.Handler(args);
            return DispatchResult.Ok;
        }
Example #2
0
        public DispatchMember(string name, int dispid, DispatchPropFlags flags)
            : this(name, dispid)
        {
            if (flags.HasFlag(DispatchPropFlags.CanCall))
            {
                DispatchFlags |= DispatchFlags.Method;
            }

            if (flags.HasFlag(DispatchPropFlags.CanGet))
            {
                DispatchFlags |= DispatchFlags.PropertyGet;
            }

            if (flags.HasFlag(DispatchPropFlags.CanPut))
            {
                DispatchFlags |= DispatchFlags.PropertyPut;
            }

            if (flags.HasFlag(DispatchPropFlags.CanPutRef))
            {
                DispatchFlags |= DispatchFlags.PropertyPutRef;
            }
        }
Example #3
0
        public DispatchMember(string name, int dispid, INVOKEKIND invokeKind)
            : this(name, dispid)
        {
            if (invokeKind.HasFlag(INVOKEKIND.INVOKE_FUNC))
            {
                DispatchFlags |= DispatchFlags.Method;
            }

            if (invokeKind.HasFlag(INVOKEKIND.INVOKE_PROPERTYGET))
            {
                DispatchFlags |= DispatchFlags.PropertyGet;
            }

            if (invokeKind.HasFlag(INVOKEKIND.INVOKE_PROPERTYPUT))
            {
                DispatchFlags |= DispatchFlags.PropertyPut;
            }

            if (invokeKind.HasFlag(INVOKEKIND.INVOKE_PROPERTYPUTREF))
            {
                DispatchFlags |= DispatchFlags.PropertyPutRef;
            }
        }
Example #4
0
        public override DispatchResult Invoke(
			int dispId, 
			uint lcid, 
			DispatchFlags wFlags, 
			object[] args, 
			out ComEXCEPINFO pExcepInfo, 
			out uint puArgErr,
			out object ret)
        {
            pExcepInfo = new ComEXCEPINFO();
            puArgErr = 0;
            DispatchType dispType = (DispatchType)wFlags;

            switch (dispId) {
                case DispId_Invoke:
                    if (dispType.IsMethod()) {
                        ret = this.agent.InvokeRemoteDelegate(this.targetId, args);
                        return DispatchResult.Ok;
                    }
                    else if (dispType.IsPropertyGet()) {
                        ret = ToString();
                        return DispatchResult.Ok;
                    }
                    break;
                case DispId_ToString:
                    if (dispType.IsMethod()) {
                        ret = ToString();
                        return DispatchResult.Ok;
                    }
                    else if (dispType.IsPropertyGet()) {
            //						int toStringDispId = this.target.GetMethodId("ToString");
            //						JsDelegateAdapter adapter = new JsDelegateAdapter(this.target, toStringDispId);
            //						return adapter.IDispatch;
                        ret = null;
                        return DispatchResult.MemberNotFound;
                    }
                    break;
                case DispId_Apply:
                    Console.WriteLine("Apply");
                    break;
                case DispId_Call:
                    Console.WriteLine("Call");
                    break;
                default:
                    ret = null;
                    return DispatchResult.MemberNotFound;
            }

            ret = null;
            return DispatchResult.MemberNotFound;
        }
Example #5
0
 public virtual DispatchResult Invoke(int id, uint lcid, DispatchFlags flags, object[] args, out System.Runtime.InteropServices.ComTypes.EXCEPINFO pExcepInfo, out uint puArgErr, out object ret)
 {
     pExcepInfo = new System.Runtime.InteropServices.ComTypes.EXCEPINFO();
     puArgErr = 0;
     ret = null;
     return DispatchResult.NotImpl;
 }