예제 #1
0
 /// <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 &lt;&lt; 1,
 ///       Sun = 1 &lt;&lt; 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));
 }
예제 #2
0
 /// <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 &lt;&lt; 1,
 ///       Sun = 1 &lt;&lt; 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);
 }