public static T Deserialize <T>(byte[] buffer, int index, int count) where T : IMessage, new() { var stream = new ProtoInputStream(buffer, index, count); var result = new T(); result.ReadFrom(stream); return(result); }
public static object Deserialize(Type messageType, Stream stream) { if (!typeof(IMessage).IsAssignableFrom(messageType)) { throw new ArgumentException("Type " + messageType + " is not IMessage"); } var instance = (IMessage)messageType.CreateInstance(); using (var pooled = stream.ToBuffer()) { var buf = pooled.Item; var input = new ProtoInputStream(buf.Buffer, buf.Offset, buf.Count); instance.ReadFrom(input); return(instance); } }