Retrieves the enum field associated with the specified value. A return value indicates whether the conversion succeeded. : Enum « Data Types « C# / C Sharp






Retrieves the enum field associated with the specified value. A return value indicates whether the conversion succeeded.

        
using System;
using System.Reflection;

namespace SnapDragon.Utilities
{
  /// <summary>
  /// Provides methods for retrieving enum and attribute values through reflection.
  /// </summary>
  public static class AttributeReflector
  {
    /// <summary>
    /// Converts the string representation of the specified enum value.
    /// </summary>
    /// <typeparam name="T">Type of attribute to parse.</typeparam>
    /// <param name="value">A string containing the value to parse.</param>
    /// <param name="output">When this method returns, contains the attribute value, if the conversion succeeded, or default if it fails.</param>
    /// <returns></returns>
    public static bool TryParse<T>(string value, out T output)
    {
      output = default(T);
      if(!Enum.IsDefined(typeof(T), value))
      {
        return false;
      }

      output = (T) Enum.Parse(typeof (T), value, true);
      return true;
    }
    /// <summary>
    /// Retrieves the enum field associated with the specified value. A return value indicates whether the conversion succeeded.
    /// </summary>
    /// <typeparam name="T">Type of enum.</typeparam>
    /// <typeparam name="TAttribute">Type of attribute to retrieve.</typeparam>
    /// <param name="value">Value of the attribute.</param>
    /// <param name="output"></param>
    /// <param name="predicate"></param>
    /// <returns></returns>
    public static bool TryGetFieldFromAttributeValue<T, TAttribute>(string value, out T output, Func<TAttribute, string> predicate)
      where TAttribute : Attribute
    {
      output = default(T);
      bool found = false;
      string attributeValue = null;
      Type type = typeof(T);
      FieldInfo[] fields = type.GetFields();

      // needs to start at 1 because GetFields includes a __value for enums
      for (int i = 1; i < fields.Length; ++i)
      {
        //Check for our custom attribute
        TAttribute[] attrs = fields[i].GetCustomAttributes(typeof(TAttribute), false) as TAttribute[];
        if (attrs != null && attrs.Length != 0)
        {
          attributeValue = predicate(attrs[0]);
        }

        //Check for equality then select actual enum value.
        if (string.Compare(attributeValue, value, true) == 0)
        {
          output = (T)Enum.Parse(type, fields[i].Name);
          found = true;
          break;
        }
      }

      return found;
    }
  }
}

   
    
    
    
    
    
    
    
  








Related examples in the same category

1.Enumerations:Initialization
2.Enumerations Initialization 2
3.Enumeration Base Types
4.Enum declare and use itEnum declare and use it
5.Demonstrate an enumerationDemonstrate an enumeration
6.Enum by IEnumerable Enum by IEnumerable
7.Enum ValuesEnum Values
8.The use of an enumeration that defines the positions of the planets in the solar system relative to the SunThe use of an enumeration that defines the positions of the planets in the solar system relative to the Sun
9.Illustrates the use of an enumeration that defines the orbital periods of the first four planets in daysIllustrates the use of an enumeration that defines the orbital periods of the first four planets in days
10.Illustrates the use of an enumeration that defines the orbital periods of the first four planets in days, using a base type of longIllustrates the use of an enumeration that defines the orbital periods of the first four planets in days, using a base type of long
11.how a derived class may override an existing enumeration in a base classhow a derived class may override an existing enumeration in a base class
12.A public enum in one class from another classA public enum in one class from another class
13.Demonstrate an enumeratorDemonstrate an enumerator
14.Demonstrate IDictionaryEnumeratorDemonstrate IDictionaryEnumerator
15.Enumerators and ForeachEnumerators and Foreach
16.Enumerations:Bit Flag Enums 1
17.Enumerations:Bit Flag Enums 2
18.Enumerations:The System.Enum TypeEnumerations:The System.Enum Type
19.Enumerations: The System.Enum Type 2Enumerations: The System.Enum Type 2
20.Enum data type comparison
21.Enum.IsDefined()
22.Get all stats for EmpType.
23.Enum Parse
24.Get Enum's type, hex and value.
25.Enum.Format()
26.Get underlying type
27.switch statement with Enum and call its ToString function
28.Format enum value
29.Wrap an enumerable so that clients can't get to the underlying implementation via a down-case
30.Try to parse Enum
31.Enum To Array
32.Get Enum Description
33.Convert all Enum value to a List
34.Get all values from an Enum type
35.Get Enum Values
36.Fill all enum value to a List
37.Provides a description for an enumerated type.
38.Get Description