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

ProjectConfiguration.cs 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System.Collections.Generic;
  2. using System.Globalization;
  3. using System.Linq;
  4. using Unity.Services.Core.Configuration.Internal;
  5. using Unity.Services.Core.Internal.Serialization;
  6. namespace Unity.Services.Core.Configuration
  7. {
  8. class ProjectConfiguration : IProjectConfiguration
  9. {
  10. string m_JsonCache;
  11. readonly IReadOnlyDictionary<string, ConfigurationEntry> m_ConfigValues;
  12. internal IJsonSerializer Serializer { get; }
  13. public ProjectConfiguration(
  14. IReadOnlyDictionary<string, ConfigurationEntry> configValues, IJsonSerializer serializer)
  15. {
  16. m_ConfigValues = configValues;
  17. Serializer = serializer;
  18. }
  19. public bool GetBool(string key, bool defaultValue = default)
  20. {
  21. var stringConfig = GetString(key);
  22. return bool.TryParse(stringConfig, out var parsedValue)
  23. ? parsedValue
  24. : defaultValue;
  25. }
  26. public int GetInt(string key, int defaultValue = default)
  27. {
  28. var stringConfig = GetString(key);
  29. return int.TryParse(stringConfig, out var parsedValue)
  30. ? parsedValue
  31. : defaultValue;
  32. }
  33. public float GetFloat(string key, float defaultValue = default)
  34. {
  35. var stringConfig = GetString(key);
  36. return float.TryParse(stringConfig, NumberStyles.Float, CultureInfo.InvariantCulture, out var parsedValue)
  37. ? parsedValue
  38. : defaultValue;
  39. }
  40. public string GetString(string key, string defaultValue = default)
  41. {
  42. return m_ConfigValues.TryGetValue(key, out var configValue)
  43. ? configValue.Value
  44. : defaultValue;
  45. }
  46. public string ToJson()
  47. {
  48. if (m_JsonCache == null)
  49. {
  50. var dict = m_ConfigValues.ToDictionary(pair => pair.Key, pair => pair.Value.Value);
  51. m_JsonCache = Serializer.SerializeObject(dict);
  52. }
  53. return m_JsonCache;
  54. }
  55. }
  56. }