using System.Collections.Generic; using System.Linq; namespace Discord.Net.SourceGenerators.Serialization { public partial class SerializationSourceGenerator { private static string GenerateSerializerOptionsTemplateSourceCode() { return @" using System; using System.Text.Json; namespace Discord.Net.Serialization { /// /// Defines extension methods for adding Discord.Net JSON converters to a /// instance. /// public static partial 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 partial JsonSerializerOptions WithDiscordNetConverters( this JsonSerializerOptions options); } }"; } private static string GenerateSerializerOptionsSourceCode( List converters) { var snippets = string.Join("\n", converters.Select( x => $"options.Converters.Add(new {x}());")); return $@" using System; using System.Text.Json; using Discord.Net.Serialization.Converters; namespace Discord.Net.Serialization {{ public static partial class JsonSerializerOptionsExtensions {{ public static partial JsonSerializerOptions WithDiscordNetConverters( this JsonSerializerOptions options) {{ options.Converters.Add(new OptionalConverterFactory()); {snippets} return options; }} }} }}"; } } }