예제 #1
0
        public void GenerateAssemblyFile()
        {
            SerializationContext context = new SerializationContext {
                EmitterFlavor       = EmitterFlavor.FieldBased,
                GeneratorOption     = SerializationMethodGeneratorOption.CanDump,
                SerializationMethod = this._method
            };
            AssemblyBuilder dedicatedAssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(this._assemblyName, AssemblyBuilderAccess.RunAndSave);

            DefaultSerializationMethodGeneratorManager.SetUpAssemblyBuilderAttributes(dedicatedAssemblyBuilder, false);
            (Activator.CreateInstance(typeof(Builder).MakeGenericType(new Type[] { this._rootType })) as Builder).GenerateAssembly(context, dedicatedAssemblyBuilder);
        }
예제 #2
0
 public void TearDown()
 {
     if (_traceOn)
     {
         try
         {
             DefaultSerializationMethodGeneratorManager.DumpTo();
         }
         finally
         {
             DefaultSerializationMethodGeneratorManager.Refresh();
         }
     }
 }
예제 #3
0
        /// <summary>
        ///		Generates the serializer assembly and save it to current directory.
        ///		</summary>
        public void GenerateAssemblyFile()
        {
            var context = new SerializationContext();

            context.EmitterFlavor       = EmitterFlavor.FieldBased;
            context.GeneratorOption     = SerializationMethodGeneratorOption.CanDump;
            context.SerializationMethod = this._method;

            var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(this._assemblyName, AssemblyBuilderAccess.RunAndSave);

            // AssemblyBuilder cannot be debugged because no PDB files (and 'dummy' source files to step).
            DefaultSerializationMethodGeneratorManager.SetUpAssemblyBuilderAttributes(assemblyBuilder, false);

            (Activator.CreateInstance(typeof(Builder <>).MakeGenericType(this._rootType)) as Builder).GenerateAssembly(context, assemblyBuilder);
        }
        public void TearDown()
        {
            if (SerializerDebugging.DumpEnabled)
            {
                try
                {
                    SerializerDebugging.Dump();
                }
                finally
                {
                    DefaultSerializationMethodGeneratorManager.Refresh();
                }
            }

            SerializerDebugging.Reset();
            SerializerDebugging.OnTheFlyCodeDomEnabled = false;
        }
        private void GenerateAssemblyFile(AssemblyBuilder assemblyBuilder)
        {
            var context = new SerializationContext();

            context.EmitterFlavor       = EmitterFlavor.FieldBased;
            context.GeneratorOption     = SerializationMethodGeneratorOption.CanDump;
            context.SerializationMethod = this._method;

            // AssemblyBuilder cannot be debugged because no PDB files (and 'dummy' source files to step).
            DefaultSerializationMethodGeneratorManager.SetUpAssemblyBuilderAttributes(assemblyBuilder, false);

            var generatorManager = SerializationMethodGeneratorManager.Get(assemblyBuilder);

            foreach (var targetType in this._targetTypes)
            {
                (Activator.CreateInstance(typeof(Builder <>).MakeGenericType(targetType)) as Builder).GenerateSerializerTo(context, generatorManager);
            }

            assemblyBuilder.Save(this._assemblyName.Name + ".dll");
        }
예제 #6
0
        public void TearDown()
        {
            if (SerializerDebugging.DumpEnabled && this.CanDump)
            {
                try
                {
                    SerializerDebugging.Dump();
                }
                catch (NotSupportedException ex)
                {
                    Console.Error.WriteLine(ex);
                }
                finally
                {
                    DefaultSerializationMethodGeneratorManager.Refresh();
                }
            }

            SerializerDebugging.Reset();
            SerializerDebugging.OnTheFlyCodeDomEnabled = false;
        }