KeyValueTable.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. namespace etoy
  3. {
  4. sealed class KeyValueTable
  5. {
  6. public string Name;
  7. public string Path;
  8. public KeyValueRow[] Rows;
  9. }
  10. sealed class KeyValueRow
  11. {
  12. public string Key;
  13. public string Value;
  14. public string Type;
  15. public string Description;
  16. public string Tag;
  17. public int Row;
  18. /// <summary>
  19. /// 是否是服务端字段
  20. /// </summary>
  21. public bool IsServerField => OutputTag.HasFlag(KeyValueTag.Server);
  22. /// <summary>
  23. /// 是否是客户端字段
  24. /// </summary>
  25. public bool IsClientField => OutputTag.HasFlag(KeyValueTag.Client);
  26. public KeyValueTag OutputTag
  27. {
  28. get
  29. {
  30. if (string.IsNullOrEmpty(Tag))
  31. return KeyValueTag.All;
  32. var result = KeyValueTag.None;
  33. if (Tag.Contains('c', StringComparison.OrdinalIgnoreCase))
  34. {
  35. result |= KeyValueTag.Client;
  36. }
  37. if (Tag.Contains('s', StringComparison.OrdinalIgnoreCase))
  38. {
  39. result |= KeyValueTag.Server;
  40. }
  41. if (result == KeyValueTag.None)
  42. {
  43. throw new Exception($"error tag, FieldName(Output) tags({Tag})");
  44. }
  45. return result;
  46. }
  47. }
  48. }
  49. enum KeyValueColumn
  50. {
  51. Key = 0,
  52. Value = 1,
  53. Type = 2,
  54. Description = 3,
  55. Tag = 4,
  56. }
  57. enum KeyValueTag
  58. {
  59. None = 0,
  60. Client = 0x1,
  61. Server = 0x10,
  62. All = Client | Server,
  63. }
  64. }