public void ReadDynamicTravelTest()
        {
            var bytes = SerializationTestContext.GetFilledDataBlockBlob();
            var stream = new MemoryStream(bytes);
            var visitor = new PackedDataReadVisitor(stream);

            var context = new DynamicTravellerContext();
            var traveller = context.GetInstance<DataBlock>();

            var graph = new DataBlock();
            traveller.Travel(visitor, graph);

            var expected = DataBlock.Filled();
            AssertAreEqual(expected, graph);
        }
예제 #2
0
        public void ReadDynamicTravelTest()
        {
            var bytes   = BinarySerializationTestContext.GetFilledDataBlockBlob();
            var stream  = new MemoryStream(bytes);
            var visitor = new PackedDataReadVisitor(stream);

            var context   = new DynamicTravellerContext();
            var traveller = context.GetInstance <DataBlock>();

            var graph = new DataBlock();

            traveller.Travel(visitor, graph);

            var expected = DataBlock.Filled();

            graph.AssertEqualTo(expected);
        }
예제 #3
0
        public DynamicTravellerBuilder(DynamicTravellerContext dtContext, ClassBuilder classBuilder, SerializableTypeProvider typeProvider, Type type)
        {
            _dtContext = dtContext;
            _classBuilder = classBuilder;
            _typeProvider = typeProvider;
            _type = type;
            _constructorBuilder = _classBuilder.DefineConstructor(typeof(IVisitArgsFactory));
            _constructorBuilder.IL.Var.Load(_constructorBuilder.IL.Var.This());
            _constructorBuilder.IL.CallBaseConstructor(typeof(object).GetConstructor(new Type[] { }));
            //_constructorBuilder.IL.Return();

            _travelWriteMethod = _classBuilder.DefineOverloadMethod("Travel", typeof(void), new[] { typeof(IWriteVisitor), _type });
            _travelReadMethod = _classBuilder.DefineOverloadMethod("Travel", typeof(void), new[] { typeof(IReadVisitor), _type });

            var factory = new VisitArgsFactory(typeProvider, type);
            _dynamicTraveller = new DynamicTraveller(_classBuilder.Type, factory, _constructorBuilder.Reference, _travelWriteMethod.Method, _travelReadMethod.Method, dtContext.Members);
        }
 public BinarySerializationTestContext()
 {
     _travellerContext = new DynamicTravellerContext(new SerializableTypeProvider(new SerializationReflectionInspector(), FactoryTypeProvider.Instance));
 }
예제 #5
0
 public SerializationEngine(DynamicTravellerContext context)
     : this(new IoCContainer(), new GraphTravellerCollection(context))
 {
 }
예제 #6
0
 public GraphTravellerCollection(DynamicTravellerContext context, IVisitArgsFactory visitArgsFactory)
     : this(t => context.GetInstance(t, visitArgsFactory))
 {
 }
예제 #7
0
 public GraphTravellerCollection(DynamicTravellerContext context)
     : this(t => context.GetInstance(t))
 {
 }