public object Deserialize(JsonSerializationReader jsr)
{
XmlReader reader = jsr.Reader;
object ret = FormatterServices.GetUninitializedObject(type);
Dictionary <TypeMapMember, bool> filled = new Dictionary <TypeMapMember, bool> ();
reader.ReadStartElement();
for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent())
{
bool consumed = false;
for (int i = 0; i < members.Length; i++)
{
TypeMapMember mm = members [i];
if (mm.Name == reader.LocalName && reader.NamespaceURI == String.Empty)
{
if (filled.ContainsKey(mm))
{
throw new SerializationException(String.Format("Object content '{0}' for '{1}' already appeared in the reader", reader.LocalName, type));
}
mm.SetMemberValue(ret, jsr.ReadObject(mm.Type));
filled [mm] = true;
consumed = true;
break;
}
}
if (!consumed)
{
reader.Skip();
}
}
reader.ReadEndElement();
return(ret);
}