private static void CreateConstructor(EmitTypeFactory factory, Type originalType, TypeBuilder typeBldr, PropertyBuilder sourceProperty, PropertyBuilder factoryProperty) { var init = ExecBld.Return( ExecBld.Block( ExecBld.SetProp(sourceProperty, ExecBld.GetArg(0), ExecBld.GetArg(1)), ExecBld.SetProp(factoryProperty, ExecBld.GetArg(0), ExecBld.GetArg(2)))); factory.CreateConstructor(typeBldr, new[] { originalType, typeof(InternalDtoAdapterFactory) }, init); }
private void CreateProperties(EmitTypeFactory factory, Type originalType, Type adapterType, TypeBuilder typeBldr, PropertyBuilder sourceProperty) { var getSource = ExecBld.GetProp(sourceProperty, ExecBld.GetThis()); foreach (var t in adapterType.GetAllInterfaceProperties()) { var tProp = originalType.GetProperty(t.Name); //, t.PropertyType); var get = ExecBld.Return(ExecBld.GetProp(tProp, getSource)); var set = ExecBld.Return(ExecBld.SetProp(tProp, getSource, ExecBld.GetArg(1))); factory.AddProperty(typeBldr, t, get, set, t.DeclaringType); } }
private static void CreateConstructor(EmitTypeFactory factory, Type originalType, TypeBuilder typeBldr, PropertyBuilder sourceProperty) { var init = ExecBld.Return(ExecBld.SetProp(sourceProperty, ExecBld.GetArg(0), ExecBld.GetArg(1))); factory.CreateConstructor(typeBldr, new[] { originalType }, init); }