System.Xml.Serialization.XmlSerializationILGen.GenerateTypedSerializers C# (CSharp) Method

GenerateTypedSerializers() private method

private GenerateTypedSerializers ( string>.Dictionary serializers, TypeBuilder serializerContractTypeBuilder ) : FieldBuilder
serializers string>.Dictionary
serializerContractTypeBuilder System.Reflection.Emit.TypeBuilder
return System.Reflection.Emit.FieldBuilder
        private FieldBuilder GenerateTypedSerializers(Dictionary<string, string> serializers, TypeBuilder serializerContractTypeBuilder)
        {
            string privateName = "typedSerializers";
            FieldBuilder fieldBuilder = GenerateHashtableGetBegin(privateName, "TypedSerializers", serializerContractTypeBuilder);
            MethodInfo Hashtable_Add = typeof(Hashtable).GetMethod(
                "Add",
                CodeGenerator.InstanceBindingFlags,
                new Type[] { typeof(Object), typeof(Object) }
                );

            foreach (string key in serializers.Keys)
            {
                ConstructorInfo ctor = CreatedTypes[(string)serializers[key]].GetConstructor(
                    CodeGenerator.InstanceBindingFlags,
                    Array.Empty<Type>()
                    );
                ilg.Ldloc(typeof(Hashtable), "_tmp");
                ilg.Ldstr(GetCSharpString(key));
                ilg.New(ctor);
                ilg.Call(Hashtable_Add);
            }
            GenerateHashtableGetEnd(fieldBuilder);
            return fieldBuilder;
        }