Esempio n. 1
0
        public IDataHolder Read(BinaryReader reader)
        {
            object      firstValue = this.m_persistors[0].Read(reader);
            IDataHolder holder     = (IDataHolder)this.m_Def.CreateHolder(firstValue);

            this.m_fields[0].Accessor.Set((object)holder, firstValue);
            for (int index = 1; index < this.m_persistors.Length; ++index)
            {
                IBinaryPersistor persistor = this.m_persistors[index];
                try
                {
                    object obj = persistor.Read(reader);
                    this.m_fields[index].Accessor.Set((object)holder, obj);
                }
                catch (Exception ex)
                {
                    throw new DataHolderException(ex,
                                                  "Failed to read DataHolder \"{0}\" (Persistor #{1} {2} for: {3}).", new object[4]
                    {
                        (object)holder,
                        (object)index,
                        (object)persistor,
                        (object)this.m_fields[index]
                    });
                }
            }

            return(holder);
        }
Esempio n. 2
0
 public void Write(BinaryWriter writer, object obj)
 {
     if (obj == null)
     {
         obj = this.m_DataField.Producer.Produce();
     }
     for (int index = 0; index < this.m_UnderlyingPersistors.Length; ++index)
     {
         IBinaryPersistor underlyingPersistor = this.m_UnderlyingPersistors[index];
         object           obj1 = this.m_accessors[index].Get(obj);
         underlyingPersistor.Write(writer, obj1);
     }
 }
Esempio n. 3
0
        public NestedPersistor(INestedDataField dataField)
        {
            this.m_DataField            = dataField;
            this.m_UnderlyingPersistors = new IBinaryPersistor[this.m_DataField.InnerFields.Count];
            this.m_accessors            = new IGetterSetter[this.m_DataField.InnerFields.Count];
            int index = 0;

            foreach (IDataField field in this.m_DataField.InnerFields.Values)
            {
                IBinaryPersistor persistor = BinaryPersistors.GetPersistor(field);
                this.m_UnderlyingPersistors[index] = persistor;
                this.m_accessors[index]            = field.Accessor;
                ++index;
            }
        }
Esempio n. 4
0
 private void Write(BinaryWriter writer, IDataHolder holder)
 {
     for (int index = 0; index < m_persistors.Length; ++index)
     {
         IBinaryPersistor persistor = m_persistors[index];
         try
         {
             object obj = m_fields[index].Accessor.Get(holder);
             persistor.Write(writer, obj);
         }
         catch (Exception ex)
         {
             throw new DataHolderException(ex,
                                           "Failed to write DataHolder \"{0}\" (Persistor #{1} {2} for: {3}).", (object)holder, (object)index,
                                           (object)persistor, (object)m_fields[index]);
         }
     }
 }
Esempio n. 5
0
        private void InitPersistors()
        {
            this.m_fields     = new IDataField[this.m_Def.Fields.Values.Count];
            this.m_persistors = new IBinaryPersistor[this.m_fields.Length];
            int index = 0;

            if (this.m_Def.DependingField != null)
            {
                this.m_persistors[0] = BinaryPersistors.GetPersistor((IDataField)this.m_Def.DependingField);
                this.m_fields[0]     = (IDataField)this.m_Def.DependingField;
                ++index;
            }

            foreach (IDataField field in this.m_Def.Fields.Values)
            {
                if (field != this.m_Def.DependingField)
                {
                    IBinaryPersistor persistor = BinaryPersistors.GetPersistor(field);
                    this.m_persistors[index] = persistor;
                    this.m_fields[index]     = field;
                    ++index;
                }
            }
        }
Esempio n. 6
0
		public ArrayPersistor(ArrayDataField field)
		{
			m_DataField = field;
			m_UnderlyingPersistor = BinaryPersistors.GetPersistorNoArray(m_DataField);
		}
Esempio n. 7
0
 public ArrayPersistor(ArrayDataField field)
 {
     m_DataField           = field;
     m_UnderlyingPersistor = BinaryPersistors.GetPersistorNoArray(m_DataField);
 }
Esempio n. 8
0
 public ArrayPersistor(ArrayDataField field)
 {
     this.m_DataField           = field;
     this.m_UnderlyingPersistor = BinaryPersistors.GetPersistorNoArray((IDataField)this.m_DataField);
 }