using System.Collections.Generic; using System.Linq; namespace Discord.Net.SourceGenerators.Serialization { public partial class SerializationSourceGenerator { private static string GenerateSerializerOptionsSourceCode( string @namespace, IEnumerable converters) { var snippets = string.Join("\n", converters.Select( x => $" options.Converters.Add(new {@namespace}.Internal.Converters.{x.ConverterTypeName}());")); return $@"using System; using System.Text.Json; using Discord.Net.Serialization.Converters; namespace {@namespace} {{ /// /// Defines extension methods for adding Discord.Net JSON converters to a /// instance. /// public static class JsonSerializerOptionsExtensions {{ /// /// Adds Discord.Net JSON converters to the passed /// . /// /// /// The serializer options to add Discord.Net converters to. /// /// /// The modified , so this method /// can be chained. /// public static JsonSerializerOptions WithDiscordNetConverters( this JsonSerializerOptions options) {{ options.Converters.Add(new OptionalConverterFactory()); {snippets} return options; }} }} }}"; } } }