internal NullableMessagePackSerializer(SerializationContext context, EmitterFlavor emitterFlavor) { if (context == null) { throw new ArgumentNullException("context"); } if (NullableMessagePackSerializer <T> ._nullableTImplicitOperator == null) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "'{0}' is not nullable type.", new object[] { typeof(T) })); } SerializerEmitter emitter = SerializationMethodGeneratorManager.Get().CreateEmitter(typeof(T), emitterFlavor); NullableMessagePackSerializer <T> .CreatePacking(emitter); NullableMessagePackSerializer <T> .CreateUnpacking(emitter); this._underlying = emitter.CreateInstance <T>(context); }
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"); }