Beispiel #1
0
        /// <summary>
        /// Override this method to manually serialize child objects
        /// contained within the current object.
        /// </summary>
        /// <param name="info">Object containing serialized values.</param>
        protected virtual void OnSerializeRef(ISerializationContext info)
        {
            FieldsSerializationHelper.SerialzeFields(this, info);

            bool mobileChildren = typeof(IMobileObject).IsAssignableFrom(typeof(T));

            if (mobileChildren)
            {
                var formatter = info.RefFormatter;

                var references = new List <int>(this.Count);
                for (int x = 0; x < this.Count; x++)
                {
                    T child = this[x];
                    if (child != null)
                    {
                        var childInfo = formatter.SerializeObject(child);
                        references.Add(childInfo.ReferenceId);
                    }
                }

                if (references.Count > 0)
                {
                    info.AddState("$list", references);
                }
            }
            else
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    serialization.DataContractSerializer serializer = new serialization.DataContractSerializer(GetType());
                    serializer.WriteObject(stream, this);
                    stream.Flush();
                    info.AddState("$list", stream.ToArray());
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// Override this method to insert your field values
 /// into the MobileFormatter serialzation stream.
 /// </summary>
 /// <param name="context">Object containing the data to serialize.</param>
 protected virtual void OnMobileSerializeState(ISerializationContext context)
 {
     FieldsSerializationHelper.SerialzeFields(this, context);
 }
Beispiel #3
0
 /// <summary>
 /// Override this method to add extra field values to
 /// the serialization stream.
 /// </summary>
 /// <param name="info">Object containing field values.</param>
 protected virtual void OnSerializeState(ISerializationContext info)
 {
     FieldsSerializationHelper.SerialzeFields(this, info);
 }