Пример #1
0
        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");
        }
Пример #2
0
 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();
        }
Пример #4
0
            public override void Load(object obj, CtpCommandReader reader)
            {
                T item = m_io.Load(reader);

                m_set(obj, item);
            }