Nessuna descrizione
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.

SerieDataComponentAttribute.cs 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.Collections.Generic;
  3. namespace XCharts.Runtime
  4. {
  5. /// <summary>
  6. /// The attribute for serie data component.
  7. /// |可添加到SerieData的组件。
  8. /// </summary>
  9. [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
  10. public sealed class SerieDataComponentAttribute : Attribute
  11. {
  12. public readonly List<Type> types = new List<Type>();
  13. public SerieDataComponentAttribute()
  14. {
  15. }
  16. public SerieDataComponentAttribute(Type type1)
  17. {
  18. AddType(type1);
  19. }
  20. public SerieDataComponentAttribute(Type type1, Type type2)
  21. {
  22. AddType(type1);
  23. AddType(type2);
  24. }
  25. public SerieDataComponentAttribute(Type type1, Type type2, Type type3)
  26. {
  27. AddType(type1);
  28. AddType(type2);
  29. AddType(type3);
  30. }
  31. public SerieDataComponentAttribute(Type type1, Type type2, Type type3, Type type4)
  32. {
  33. AddType(type1);
  34. AddType(type2);
  35. AddType(type3);
  36. AddType(type4);
  37. }
  38. public SerieDataComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5)
  39. {
  40. AddType(type1);
  41. AddType(type2);
  42. AddType(type3);
  43. AddType(type4);
  44. AddType(type5);
  45. }
  46. public SerieDataComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6)
  47. {
  48. AddType(type1);
  49. AddType(type2);
  50. AddType(type3);
  51. AddType(type4);
  52. AddType(type5);
  53. AddType(type6);
  54. }
  55. public SerieDataComponentAttribute(Type type1, Type type2, Type type3, Type type4, Type type5, Type type6, Type type7)
  56. {
  57. AddType(type1);
  58. AddType(type2);
  59. AddType(type3);
  60. AddType(type4);
  61. AddType(type5);
  62. AddType(type6);
  63. AddType(type7);
  64. }
  65. private void AddType(Type type)
  66. {
  67. if (!SerieData.extraComponentMap.ContainsKey(type))
  68. throw new ArgumentException("SerieData not support extra component:" + type);
  69. types.Add(type);
  70. }
  71. public bool Contains<T>() where T : ISerieComponent
  72. {
  73. return Contains(typeof(T));
  74. }
  75. public bool Contains(Type type)
  76. {
  77. return types.Contains(type);
  78. }
  79. }
  80. }