public static T GetArgsPropValue <T>(this IClientMethod clientMethod, string argsPropKey, T defaultValue = default(T)) { var containsArgs = clientMethod.Bags.ContainsKey("args"); if (!containsArgs) { return(defaultValue); } var theArgs = clientMethod.Bags["args"]; if (theArgs is JObject theJObject) { //有可能来自网络序列化 var jToken = theJObject.GetValue(argsPropKey, StringComparison.OrdinalIgnoreCase); return(jToken == null ? defaultValue : jToken.ToObject <T>()); } var argsJson = JsonConvert.SerializeObject(theArgs); var argsDic = JsonConvert.DeserializeObject <IDictionary <string, object> >(argsJson); foreach (var argsDicKey in argsDic.Keys) { if (argsDicKey.Equals(argsPropKey, StringComparison.OrdinalIgnoreCase)) { var propValue = argsDic[argsPropKey]; var propValueJson = JsonConvert.SerializeObject(propValue); return(JsonConvert.DeserializeObject <T>(propValueJson)); } } return(defaultValue); }
protected override void checkForMessage() { Message message = new Message(); ReadWriteResult result = m_fromClientQueue.Receive(message); IClientMethod clMethod = null; if (result == ReadWriteResult.OK) { string data = Encoding.UTF8.GetString(message.MessageBytes, 0, message.MessageBytes.GetLength(0)); Logger.Write("receive data from client: " + data); clMethod = (IClientMethod)m_methodSelector.selectMethod(data); clMethod.setQueueForAnswer(m_toClientQueue); } processMessage(clMethod); }
public static void SetArgsPropValue <T>(this IClientMethod clientMethod, string argsPropKey, T argsPropValue) { var containsArgs = clientMethod.Bags.ContainsKey("args"); if (!containsArgs) { clientMethod.Bags["args"] = new ConcurrentDictionary <string, object>(StringComparer.OrdinalIgnoreCase); } var theArgs = clientMethod.Bags["args"]; if (theArgs is JObject theJObject) { //有可能来自网络序列化 theJObject.SetPropertyContent(argsPropKey, argsPropValue); return; } var argsJson = JsonConvert.SerializeObject(theArgs); var argsDic = JsonConvert.DeserializeObject <IDictionary <string, object> >(argsJson); argsDic[argsPropKey] = argsPropValue; clientMethod.Bags["args"] = argsDic; }
public static void SetArgs <TArgs>(this IClientMethod clientMethod, TArgs args) { clientMethod.SetBagItem(args); }
public static TArgs GetArgs <TArgs>(this IClientMethod clientMethod, TArgs defaultArgs = default(TArgs)) { return(clientMethod.GetBagItem <TArgs>("args", defaultArgs)); }