/// <summary> /// Gets the enum's <see cref="ExtendedEnum{TEnum}.ValueDetail">ValueDetail</see>. /// </summary> /// <typeparam name="TEnum">The enum type.</typeparam> /// <param name="value">The enum value.</param> /// <param name="includeImplicit"> /// <para>If set to <see langword="true"/> includes implicit values of flag enums.</para> /// <para>By default this is set to <see langword="false"/>.</para> /// </param> /// <returns>The <see cref="ExtendedEnum{TEnum}.ValueDetail">ValueDetail</see>.</returns> /// <example> /// <code> /// [Flags] /// private enum Days /// { /// None = 0, /// Fri = 1, /// Sat = 1 << 1, /// Sun = 1 << 2, /// Weekend = Sat | Sun /// }; /// /// Console.WriteLine(Days.Weekend.GetValueDetail()); // Outputs 'Weekend' = 3 [2 flags] /// Console.WriteLine(Days.Sat.GetValueDetail()); // Outputs 'Sat' = 2 /// </code> /// </example> /// <exception cref="ArgumentOutOfRangeException"> /// The enum of type <typeparamref name="TEnum"/> doesn't contain the <paramref name="value"/> specified. /// </exception> public static ExtendedEnum <TEnum> .ValueDetail GetValueDetail <TEnum>( this TEnum value, bool includeImplicit = false) where TEnum : struct, IComparable, IFormattable, IConvertible { return(ExtendedEnum <TEnum> .GetValueDetail(value, includeImplicit)); }
/// <summary> /// Gets a <see cref="bool"/> indicating whether the specified value is a combination flag. /// </summary> /// <typeparam name="TEnum">The type of the enum.</typeparam> /// <param name="value">The enum value.</param> /// <param name="includeImplicit"> /// <para>If set to <see langword="true"/> includes implicit values of flag enums.</para> /// <para>By default this is set to <see langword="false"/>.</para></param> /// <returns> /// Returns <see langword="true"/> if <paramref name="value"/> is a combination flag; otherwise returns <see langword="false"/>. /// </returns> /// <example> /// Example of a combination flag: /// <code> /// [Flags] /// private enum Days /// { /// None = 0, /// Fri = 1, /// Sat = 1 << 1, /// Sun = 1 << 2, /// Weekend = Sat | Sun // Combination flag /// }; /// /// Console.WriteLine(Days.Fri.IsCombinationFlag()); // Outputs false /// Console.WriteLine(Days.Weekend.IsCombinationFlag()); // Outputs true /// </code> /// </example> public static bool IsCombinationFlag <TEnum>(this TEnum value, bool includeImplicit = false) where TEnum : struct, IComparable, IFormattable, IConvertible { return(ExtendedEnum <TEnum> .GetValueDetail(value, includeImplicit).Flags > 1); }