FlagsEnumTool.cs 1.5 KB

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