Ejemplo n.º 1
0
 public DynamicTravellerContext(SerializableTypeProvider typeProvider)
 {
     _typeProvider    = typeProvider;
     _travellers      = new Dictionary <Type, DynamicTraveller>();
     _assemblyBuilder = new AssemblyBuilder();
     Members          = new DynamicTravellerMembers();
 }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 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));

            var baseConstructor = typeof(object).GetTypeInfo().GetConstructor(Type.EmptyTypes);
            var il = _constructorBuilder.IL;

            il.Load(ILPointer.This());
            il.Emit(OpCodes.Call, baseConstructor);

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

            DynamicTraveller = new DynamicTraveller(_classBuilder.Type, _constructorBuilder.Reference, _travelWriteMethod.Method, _travelReadMethod.Method, dtContext.Members);
        }
        public void SerializableTypeProvider_PrimitiveArraysProvided()
        {
            var serializableTypeProvider = new SerializableTypeProvider();

            Assert.Contains(typeof(bool[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(byte[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(sbyte[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(char[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(decimal[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(double[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(float[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(int[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(uint[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(long[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(ulong[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(short[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(ushort[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(object[]), serializableTypeProvider.SerializableTypes);
            Assert.Contains(typeof(string[]), serializableTypeProvider.SerializableTypes);
        }
Ejemplo n.º 5
0
 public GraphTypeFactory(SerializableTypeProvider provider)
 {
     _provider   = provider;
     _graphTypes = new Dictionary <Type, IGraphType>();
 }
Ejemplo n.º 6
0
 public VisitArgsFactory(SerializableTypeProvider provider, Type type)
 {
     Provider         = provider;
     SerializableType = provider.GetOrCreate(type);
 }
Ejemplo n.º 7
0
 public GraphTypeFactory(SerializableTypeProvider provider)
 {
     _provider = provider;
     _graphTypes = new Dictionary<Type, IGraphType>();
 }