Exemple #1
0
        A ISubTypeSerializer <A> .ReadSubType(ref ProtoReader.State state, SubTypeState <A> value)
        {
            int field;

            value.OnBeforeDeserialize((obj, ctx) => obj.OnBeforeDeserialize());
            while ((field = state.ReadFieldHeader()) != 0)
            {
                switch (field)
                {
                case 1:
                    value.Value.AVal = state.ReadInt32();
                    break;

                case 4:
                    value.ReadSubType <B>(ref state, this);
                    break;

                default:
                    state.SkipField();
                    break;
                }
            }
            value.Value.OnAfterDeserialize();
            return(value.Value);
        }
        T ISubTypeSerializer <T> .ReadSubType(ref ProtoReader.State state, SubTypeState <T> value)
        {
            value.OnBeforeDeserialize(_subTypeOnBeforeDeserialize);
            DeserializeBody(ref state, ref value, (ref SubTypeState <T> s) => s.Value, (ref SubTypeState <T> s, T v) => s.Value = v);
            var val = value.Value;

            Callback(ref val, TypeModel.CallbackType.AfterDeserialize, state.Context);
            return(val);
        }
Exemple #3
0
        T ISubTypeSerializer <T> .ReadSubType(ref ProtoReader.State state, SubTypeState <T> value)
        {
            bool isFirst = Interlocked.Increment(ref _subDeserializeCount) == 1;

            if (isFirst)
            {
                RuntimeTypeModel.OnDebugLog("Pre first sub-read", typeof(T));
            }
            var ret = subTypeDeserializer(ref state, value);

            if (isFirst)
            {
                RuntimeTypeModel.OnDebugLog("Pre first sub-read", typeof(T));
            }
            return(ret);
        }
Exemple #4
0
        C ISubTypeSerializer <C> .ReadSubType(ref ProtoReader.State state, SubTypeState <C> value)
        {
            int field;

            while ((field = state.ReadFieldHeader()) != 0)
            {
                switch (field)
                {
                case 3:
                    value.Value.CVal = state.ReadInt32();
                    break;

                default:
                    state.SkipField();
                    break;
                }
            }
            return(value.Value);
        }
Exemple #5
0
 C ISerializer <C> .Read(ref ProtoReader.State state, C value)
 => (C)((ISubTypeSerializer <A>) this).ReadSubType(ref state, SubTypeState <A> .Create <C>(state.Context, value));
Exemple #6
0
 T ISubTypeSerializer <T> .ReadSubType(ref ProtoReader.State state, SubTypeState <T> value)
 {
     return(subTypeDeserializer(ref state, value));
 }