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; }
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; } }
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; } }
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; }
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; }