Пример #1
0
        /// <summary>
        /// Includes an enumerated type and returns the new value
        /// </summary>
        public static T Include <T>(this Enum extended, T item)
        {
            Type type = extended.GetType();

            //determine the values
            object        result = extended;
            NarrowedValue parsed = new NarrowedValue(item, type);

            if (parsed.Signed is long)
            {
                result = Convert.ToInt64(extended) | (long)parsed.Signed;
            }
            else if (parsed.Unsigned is ulong)
            {
                result = Convert.ToUInt64(extended) | (ulong)parsed.Unsigned;
            }

            //return the final value
            return((T)Enum.Parse(type, result.ToString()));
        }
Пример #2
0
        /// <summary>
        /// Checks if an enumerated type contains a value
        /// </summary>
        public static bool Has <T>(this Enum extended, T check)
        {
            Type type = extended.GetType();

            NarrowedValue parsed = new NarrowedValue(check, type);

            if (parsed.Signed is long)
            {
                return((Convert.ToInt64(extended) &
                        (long)parsed.Signed) == parsed.Signed);
            }
            else if (parsed.Unsigned is ulong)
            {
                return((Convert.ToUInt64(extended) &
                        (ulong)parsed.Unsigned) == parsed.Unsigned);
            }
            else
            {
                return(false);
            }
        }