public EventArgs Read(Stream innerStream, Type concreteType) { if (innerStream == null) throw new ArgumentNullException("innerStream"); if (concreteType == null) throw new ArgumentNullException("concreteType"); using (var sr = new StreamReader(innerStream.PreventClosure(), Encoding.UTF8, false, 128)) using (var jtr = new JsonTextReader(sr)) { SetupJsonTextReader(jtr); return (EventArgs) new JsonSerializer { TypeNameHandling = TypeNameHandling.Auto } .Deserialize(jtr, concreteType); } }