public static bool Has <T>(this Enum value, T check) { if (value == null) { throw new NullReferenceException(); } Type type = value.GetType(); //determine the values //object result = value; _EnumValue parsed = new _EnumValue(check, type); if (parsed.Signed is long) { return((Convert.ToInt64(value, CultureInfo.InvariantCulture) & (long)parsed.Signed) == (long)parsed.Signed); } else if (parsed.Unsigned is ulong) { return((Convert.ToUInt64(value, CultureInfo.InvariantCulture) & (ulong)parsed.Unsigned) == (ulong)parsed.Unsigned); } else { return(false); } }
public static T Include <T>(this Enum value, T append) { if (value == null) { throw new NullReferenceException(); } Type type = value.GetType(); //determine the values object result = value; _EnumValue parsed = new _EnumValue(append, type); if (parsed.Signed is long) { result = Convert.ToInt64(value, CultureInfo.InvariantCulture) | (long)parsed.Signed; } else if (parsed.Unsigned is ulong) { result = Convert.ToUInt64(value, CultureInfo.InvariantCulture) | (ulong)parsed.Unsigned; } //return the final value return((T)Enum.Parse(type, result.ToString())); }