FlagsEnumTool.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Azylee.Core.DataUtils.EnumUtils
  6. {
  7. /// <summary>
  8. /// 标志枚举修改工具
  9. /// 弃用:效率太低
  10. /// sa = sa | StatusAttributes.Join;//添加属性
  11. /// sa = (sa | StatusAttributes.Share) ^ StatusAttributes.Share;//删除属性
  12. /// </summary>
  13. [Obsolete]
  14. public sealed class FlagsEnumTool
  15. {
  16. public static int AddAttribute(int en, int att)
  17. {
  18. return en ^ att;
  19. }
  20. public static int AddAttribute<T>(T en, T att)
  21. {
  22. try
  23. {
  24. int intEn = (int)Convert.ChangeType(en, typeof(int));
  25. int intAtt = (int)Convert.ChangeType(att, typeof(int));
  26. return intEn ^ intAtt;
  27. }
  28. catch (Exception e) { }
  29. return 0;
  30. }
  31. public static int RemoveAttribute(int en, int att)
  32. {
  33. return (en | att) ^ att;
  34. }
  35. public static int RemoveAttribute<T>(T en, T att)
  36. {
  37. try
  38. {
  39. int intEn = (int)Convert.ChangeType(en, typeof(int));
  40. int intAtt = (int)Convert.ChangeType(att, typeof(int));
  41. return (intEn | intAtt) ^ intAtt;
  42. }
  43. catch (Exception e) { }
  44. return 0;
  45. }
  46. }
  47. }