public void SendEvent(string name, Object[] vars) { Console.WriteLine("SendEvent {0}", name); Type t = typeof(T); EventInfo eInfo = t.GetEvent(name); if (eInfo != null) { IntPtr[] msgs = NativeHelper.CreateMessages(vars); NativeHelper.Server_SendSignal(_nativeServer.Value, name, msgs, msgs.Length); } }
/// <summary> /// Calls a method by name /// </summary> /// <param name="name">The name of the method to call</param> /// <param name="vars">All the parameters that will be sent</param> public Object[] CallMethod(string name, object[] vars) { Console.WriteLine("Method name = {0}", name); Type type = typeof(T); MethodInfo mInfo = type.GetMethod(name); if (mInfo != null) { ParameterInfo[] sig = mInfo.GetParameters(); for (int i = 0; i < vars.Length; i++) { if (sig[i].ParameterType != vars[i].GetType()) { string s = "Expected : " + sig[i].ParameterType.Name + " got : " + vars[i].GetType().Name; throw new ApplicationException(s); } } IntPtr[] msgs = NativeHelper.CreateMessages(vars); IntPtr message = NativeHelper.Client_CallMethod(_nativeClient.Value, name, msgs, msgs.Length); if (message != IntPtr.Zero) { string signature = NativeHelper.MessageSignature(message); Object[] replyValue = new Object[signature.Length]; if (signature.Length > 0) { NativeHelper.extractValues(replyValue, message, signature); Console.WriteLine("Value received : {0}", replyValue); } return(replyValue); } else { Console.WriteLine("Nothing was returned"); } } return(null); }