public static DataBlockHardCodedTraveller Create() { var factory = new VisitArgsFactory(new SerializableTypeProvider( new SerializationReflectionInspector(), FactoryTypeProvider.Instance), typeof(DataBlock)); return(new DataBlockHardCodedTraveller(factory)); }
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 IGraphType GetOrCreate(Type type) { var serType = _provider.GetOrCreate(type); var visitArgsFactory = new VisitArgsFactory(_provider, type); var graphProperties = new List <IGraphProperty>(); var properties = serType.Properties; foreach (var property in properties) { var args = visitArgsFactory.Construct(property.Ref.Name); var graphProperty = Create(property, args); graphProperties.Add(graphProperty); } var graphType = new ComplexGraphType(graphProperties); _graphTypes.Add(type, graphType); return(graphType); }