You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

SerializationSourceGenerator.OptionsSource.cs 1.9 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. namespace Discord.Net.SourceGenerators.Serialization
  4. {
  5. public partial class SerializationSourceGenerator
  6. {
  7. private static string GenerateSerializerOptionsTemplateSourceCode()
  8. {
  9. return @"
  10. using System;
  11. using System.Text.Json;
  12. namespace Discord.Net.Serialization
  13. {
  14. /// <summary>
  15. /// Defines extension methods for adding Discord.Net JSON converters to a
  16. /// <see cref=""JsonSerializerOptions""/> instance.
  17. /// </summary>
  18. public static partial class JsonSerializerOptionsExtensions
  19. {
  20. /// <summary>
  21. /// Adds Discord.Net JSON converters to the passed
  22. /// <see cref=""JsonSerializerOptions""/>.
  23. /// </summary>
  24. /// <param name=""options"">
  25. /// The serializer options to add Discord.Net converters to.
  26. /// </param>
  27. /// <returns>
  28. /// The modified <see cref=""JsonSerializerOptions""/>, so this method
  29. /// can be chained.
  30. /// </returns>
  31. public static partial JsonSerializerOptions WithDiscordNetConverters(
  32. this JsonSerializerOptions options);
  33. }
  34. }";
  35. }
  36. private static string GenerateSerializerOptionsSourceCode(
  37. List<string> converters)
  38. {
  39. var snippets = string.Join("\n",
  40. converters.Select(
  41. x => $"options.Converters.Add(new {x}());"));
  42. return $@"
  43. using System;
  44. using System.Text.Json;
  45. using Discord.Net.Serialization.Converters;
  46. namespace Discord.Net.Serialization
  47. {{
  48. public static partial class JsonSerializerOptionsExtensions
  49. {{
  50. public static partial JsonSerializerOptions WithDiscordNetConverters(
  51. this JsonSerializerOptions options)
  52. {{
  53. options.Converters.Add(new OptionalConverterFactory());
  54. {snippets}
  55. return options;
  56. }}
  57. }}
  58. }}";
  59. }
  60. }
  61. }

No Description