コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }