public string GenerateGlobalHelperStaticClass() { StringBuilder builder = new StringBuilder(); builder.Append($@" using MongoDB.Client.Bson.Reader; using MongoDB.Client.Bson.Serialization; using System; using System.Collections.Generic; using System.Runtime.CompilerServices; namespace MongoDB.Client.Bson.Serialization.Generated{{ public static class {Basics.GlobalSerializationHelperGeneratedString}{{ {GenerateFields()} {GenerateGetSeriazlizersMethod()} [ModuleInitializerAttribute] public static void MapInit() {{ SerializersMap.RegisterSerializers(GetGeneratedSerializers()) ; }} }} }}"); return(builder.ToString()); string GenerateFields() { var builder = new StringBuilder(); foreach (var info in meta) { builder.Append($"\n\t\tpublic static readonly IGenericBsonSerializer<{info.ClassSymbol.ToString()}> {Basics.GenerateSerializerNameStaticField(info.ClassSymbol)} = new {Basics.GenerateSerializerName(info.ClassSymbol)}();"); } return(builder.ToString()); } string GenerateGetSeriazlizersMethod() { StringBuilder builder = new StringBuilder(); builder.Append($@" public static KeyValuePair<Type, IBsonSerializer>[] GetGeneratedSerializers() {{ var pairs = new KeyValuePair<Type, IBsonSerializer>[{meta.Count}]; "); int index = 0; foreach (var decl in meta) { builder.Append($@" pairs[{index}] = KeyValuePair.Create<Type, IBsonSerializer>(typeof({decl.ClassSymbol.ToString()}), {Basics.GenerateSerializerNameStaticField(decl.ClassSymbol)}); "); index++; } builder.Append(@" return pairs; } "); return(builder.ToString()); } }