示例#1
0
        public DynamicObjectFormatter(CerasSerializer serializer)
        {
            _ceras = serializer;

            var type = typeof(T);
            var meta = _ceras.GetTypeMetaData(type);

            BannedTypes.ThrowIfBanned(type);
            BannedTypes.ThrowIfNonspecific(type);

            var schema = meta.PrimarySchema;

            if (schema.Members.Count > 0)
            {
                _dynamicSerializer   = GenerateSerializer(schema.Members);
                _dynamicDeserializer = GenerateDeserializer(schema.Members);
            }
            else
            {
                _dynamicSerializer   = (ref byte[] buffer, ref int offset, T value) => { };
                _dynamicDeserializer = (byte[] buffer, ref int offset, ref T value) => { };
            }
        }