예제 #1
0
 public void InvokeWrite <TItemType>(IGeneratedSerializer <TItemType> serializer, Span <byte> destination, TItemType item, int offset, SerializationContext context)
 {
     serializer.Write(
         this,
         destination,
         item,
         offset,
         context);
 }
예제 #2
0
 public GeneratedSerializerWrapper(
     IGeneratedSerializer <T> innerSerializer,
     Assembly generatedAssembly,
     Func <string> generatedCSharp,
     byte[] generatedAssemblyBytes)
 {
     this.lazyCSharp      = new Lazy <string>(generatedCSharp);
     this.Assembly        = generatedAssembly;
     this.AssemblyBytes   = generatedAssemblyBytes;
     this.innerSerializer = innerSerializer;
 }
예제 #3
0
        public GeneratedSerializerWrapper(
            IGeneratedSerializer <T>?innerSerializer,
            Assembly?generatedAssembly,
            Func <string?> generatedCSharp,
            byte[]?generatedAssemblyBytes)
        {
            this.lazyCSharp      = new Lazy <string?>(generatedCSharp);
            this.Assembly        = generatedAssembly;
            this.AssemblyBytes   = generatedAssemblyBytes;
            this.innerSerializer = innerSerializer ?? throw new ArgumentNullException(nameof(innerSerializer));

            var tableAttribute = typeof(T).GetCustomAttribute <Attributes.FlatBufferTableAttribute>();

            this.fileIdentifier = tableAttribute?.FileIdentifier;
        }
    private GeneratedSerializerWrapper(GeneratedSerializerWrapper <T> template, SerializerSettings settings)
    {
        this.lazyCSharp      = template.lazyCSharp;
        this.Assembly        = template.Assembly;
        this.AssemblyBytes   = template.AssemblyBytes;
        this.innerSerializer = template.innerSerializer;
        this.fileIdentifier  = template.fileIdentifier;

        this.enableMemoryCopySerialization = settings.EnableMemoryCopySerialization;

        Func <ISharedStringWriter>?writerFactory = settings.SharedStringWriterFactory;

        if (writerFactory is not null)
        {
            this.sharedStringWriter = new ThreadLocal <ISharedStringWriter>(writerFactory);
        }
    }
예제 #5
0
 public void InvokeWrite <TItemType>(IGeneratedSerializer <TItemType> serializer, Span <byte> destination, TItemType item, int offset, SerializationContext context)
 {
     throw new NotImplementedException();
 }
예제 #6
0
 public TItem InvokeParse <TItem>(IGeneratedSerializer <TItem> serializer, int offset)
 {
     return(serializer.Parse(new Wrapper(this), offset));
 }
예제 #7
0
 /// <summary>
 /// Wraps the given generated serializer as an ISerializer.
 /// </summary>
 public static ISerializer <T> AsISerializer <T>(this IGeneratedSerializer <T> generatedSerializer) where T : class
 {
     return(new GeneratedSerializerWrapper <T>(generatedSerializer, null, () => null, null));
 }
예제 #8
0
 public T InvokeParse <T>(IGeneratedSerializer <T> serializer, int offset)
 {
     return(serializer.Parse(this, offset));
 }