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); }
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); } }
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; } }
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]); } } }
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; } } }
public ArrayPersistor(ArrayDataField field) { m_DataField = field; m_UnderlyingPersistor = BinaryPersistors.GetPersistorNoArray(m_DataField); }
public ArrayPersistor(ArrayDataField field) { m_DataField = field; m_UnderlyingPersistor = BinaryPersistors.GetPersistorNoArray(m_DataField); }
public ArrayPersistor(ArrayDataField field) { this.m_DataField = field; this.m_UnderlyingPersistor = BinaryPersistors.GetPersistorNoArray((IDataField)this.m_DataField); }