static private DeserializeFromStream ( Stream stream, |
||
stream | Stream | |
messageType | ||
리턴 | object |
internal static object DeserializeFromStream(Stream stream, Type messageType)
{
var serializer = new JsonSerializer();
using (var sr = new StreamReader(stream))
using (var jsonTextReader = new JsonTextReader(sr))
{
return serializer.Deserialize(jsonTextReader, messageType);
}
}
public void HandleMessage(string messageType, byte[] data) { object messageObject; Type type; using (var ms = new MemoryStream(data)) { lock (this.typeCache) { if (!this.typeCache.TryGetValue(messageType, out type)) { type = typeof(Animatroller.Framework.MonoExpanderMessages.Ping).Assembly.GetType(messageType, true); this.typeCache.Add(messageType, type); } } messageObject = Main.DeserializeFromStream(ms, type); } if (messageObject != null) { InternalInvokeMessage(type, messageObject); } }