public sealed override void Write(BitStream stream, ref TOwner obj, MySerializeInfo info)
        {
            try
            {
#if !XB1 // XB1_SYNC_SERIALIZER_NOEMIT
                TMember value;
                m_getter(ref obj, out value);
                MySerializationHelpers.Write <TMember>(stream, ref value, m_serializer, info ?? m_info);
#else // XB1
                System.Diagnostics.Debug.Assert(false, "TODO for XB1.");
#endif // XB1
            }
            catch (MySerializeException e)
            {
                string err;
                switch (e.Error)
                {
                case MySerializeErrorEnum.DynamicNotAllowed:
                    err = String.Format("Error serializing {0}.{1}, member contains inherited type, but it's not allowed, consider adding attribute [Serialize(MyObjectFlags.Dynamic)]", m_memberInfo.DeclaringType.Name, m_memberInfo.Name);
                    break;

                case MySerializeErrorEnum.NullNotAllowed:
                    err = String.Format("Error serializing {0}.{1}, member contains null, but it's not allowed, consider adding attribute [Serialize(MyObjectFlags.Nullable)]", m_memberInfo.DeclaringType.Name, m_memberInfo.Name);
                    break;

                default:
                    err = "Unknown serialization error";
                    break;
                }
                //Debug.WriteLine(err);
                throw new InvalidOperationException(err, e);
            }
        }
Exemple #2
0
 public override void Write(Library.Collections.BitStream stream, ref TItem[] value, MySerializeInfo info)
 {
     stream.WriteVariant((uint)value.Length);
     for (int i = 0; i < value.Length; i++)
     {
         MySerializationHelpers.Write <TItem>(stream, ref value[i], m_itemSerializer, info.ItemInfo ?? MySerializeInfo.Default);
     }
 }
Exemple #3
0
        public sealed override void Read(BitStream stream, ref TOwner obj, MySerializeInfo info)
        {
            TMember result;

            if (MySerializationHelpers.CreateAndRead <TMember>(stream, out result, m_serializer, info ?? m_info))
            {
                m_setter(ref obj, ref result);
            }
        }
Exemple #4
0
        public override void Read(Library.Collections.BitStream stream, out TItem[] value, MySerializeInfo info)
        {
            int num = (int)stream.ReadUInt32Variant();

            value = new TItem[num];
            for (int i = 0; i < value.Length; i++)
            {
                MySerializationHelpers.CreateAndRead <TItem>(stream, out value[i], m_itemSerializer, info.ItemInfo ?? MySerializeInfo.Default);
            }
        }
Exemple #5
0
        public override void Write(BitStream stream, ref HashSet <TItem> value, MySerializeInfo info)
        {
            TItem item;
            int   num = value.Count;

            stream.WriteVariant((uint)num);
            foreach (var obj in value)
            {
                item = obj;
                MySerializationHelpers.Write <TItem>(stream, ref item, m_itemSerializer, info.ItemInfo ?? MySerializeInfo.Default);
            }
        }
Exemple #6
0
        public override void Read(BitStream stream, out HashSet <TItem> value, MySerializeInfo info)
        {
            TItem item;
            int   num = (int)stream.ReadUInt32Variant();

            value = new HashSet <TItem>();
            for (int i = 0; i < num; i++)
            {
                MySerializationHelpers.CreateAndRead <TItem>(stream, out item, m_itemSerializer, info.ItemInfo ?? MySerializeInfo.Default);
                value.Add(item);
            }
        }
Exemple #7
0
        public override void Write(BitStream stream, ref List <TItem> value, MySerializeInfo info)
        {
            TItem item;
            int   num = value.Count;

            stream.WriteVariant((uint)num);
            for (int i = 0; i < num; i++)
            {
                item = value[i];
                MySerializationHelpers.Write <TItem>(stream, ref item, m_itemSerializer, info.ItemInfo ?? MySerializeInfo.Default);
            }
        }
        public sealed override void Read(BitStream stream, ref TOwner obj, MySerializeInfo info)
        {
            TMember result;

            if (MySerializationHelpers.CreateAndRead <TMember>(stream, out result, m_serializer, info ?? m_info))
            {
#if !XB1 // XB1_SYNC_SERIALIZER_NOEMIT
                m_setter(ref obj, ref result);
#else // XB1
                System.Diagnostics.Debug.Assert(false, "TODO for XB1.");
#endif // XB1
            }
        }
        public override void Read(BitStream stream, out Dictionary <TKey, TValue> obj, MySerializeInfo info)
        {
            TKey   key;
            TValue value;
            int    num = (int)stream.ReadUInt32Variant();

            obj = new Dictionary <TKey, TValue>(num);
            for (int i = 0; i < num; i++)
            {
                MySerializationHelpers.CreateAndRead(stream, out key, m_keySerializer, info.KeyInfo ?? MySerializeInfo.Default);
                MySerializationHelpers.CreateAndRead(stream, out value, m_valueSerializer, info.ItemInfo ?? MySerializeInfo.Default);
                obj.Add(key, value);
            }
        }
        public override void Write(BitStream stream, ref Dictionary <TKey, TValue> obj, MySerializeInfo info)
        {
            TKey   key;
            TValue value;
            int    num = obj.Count;

            stream.WriteVariant((uint)num);
            foreach (var item in obj)
            {
                key   = item.Key;
                value = item.Value;
                MySerializationHelpers.Write(stream, ref key, m_keySerializer, info.KeyInfo ?? MySerializeInfo.Default);
                MySerializationHelpers.Write(stream, ref value, m_valueSerializer, info.ItemInfo ?? MySerializeInfo.Default);
            }
        }
Exemple #11
0
 public static void Write <T>(BitStream stream, ref T value, MySerializeInfo serializeInfo = null)
 {
     MySerializationHelpers.Write(stream, ref value, MyFactory.GetSerializer <T>(), serializeInfo ?? MySerializeInfo.Default);
 }
Exemple #12
0
 public static void CreateAndRead <T>(BitStream stream, out T value, MySerializeInfo serializeInfo = null)
 {
     MySerializationHelpers.CreateAndRead(stream, out value, MyFactory.GetSerializer <T>(), serializeInfo ?? MySerializeInfo.Default);
 }