public void Load(CtpCommandReader reader, out bool isNull, out T1 v1, out T2 v2) { isNull = reader.IsElementOrArrayNull; v1 = default(T1); v2 = default(T2); if (reader.IsElementOrArrayNull) { reader.Read(); return; } while (reader.Read()) { switch (reader.NodeType) { case CommandSchemaSymbol.StartElement: case CommandSchemaSymbol.StartArray: if (reader.ElementName == m_item1Name) { v1 = m_serializeT1.Load(reader); } else if (reader.ElementName == m_item2Name) { v2 = m_serializeT2.Load(reader); } else { throw new Exception("Parsing Error"); } break; case CommandSchemaSymbol.Value: if (reader.ValueName == m_item1Name) { v1 = m_serializeT1.Load(reader); } else if (reader.ValueName == m_item2Name) { v2 = m_serializeT2.Load(reader); } else { throw new Exception("Parsing Error"); } break; case CommandSchemaSymbol.EndElement: return; default: throw new ArgumentOutOfRangeException(); } } throw new Exception("Parsing Error"); }
public override T?Load(CtpCommandReader reader) { //ToDo: What if the enum is a complex data type. if (reader.NodeType != CommandSchemaSymbol.Value) { throw new Exception("Expecting a value type"); } if (reader.Value.IsNull) { return(null); } return(m_serializeT.Load(reader)); }
public override TEnum Load(CtpCommandReader reader) { if (!reader.IsArray) { throw new Exception("Expecting An Array Type"); } if (reader.IsElementOrArrayNull) { reader.Read(); return(null); } T[] items = new T[reader.ArrayCount]; int x = 0; while (reader.Read()) { switch (reader.NodeType) { case CommandSchemaSymbol.StartElement: case CommandSchemaSymbol.StartArray: case CommandSchemaSymbol.Value: items[x] = m_serializeT.Load(reader); x++; break; case CommandSchemaSymbol.EndArray: return(m_castToType(items)); default: throw new ArgumentOutOfRangeException(); } } throw new ArgumentOutOfRangeException(); }
public override void Load(object obj, CtpCommandReader reader) { T item = m_io.Load(reader); m_set(obj, item); }