/// <summary> /// Gets the list of possible values for an enumeration /// </summary> /// <returns>The list of values</returns> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- ------ --------------------------------------------- // 02/07/11 RCG 2.50.02 Created public static IEnumerable <T> GetValues <T>() { List <T> Values = new List <T>(); T EnumObject = (T)Activator.CreateInstance(typeof(T)); // The Compact Framework does not support Enum.GetValues() so this will give us the equivalent results. foreach (FieldInfo CurrentFieldInfo in typeof(T).GetFields(BindingFlags.Public | BindingFlags.Static)) { Values.Add((T)CurrentFieldInfo.GetValue(EnumObject)); } return(Values); }
/// <summary> /// Creates a projection of the specified source object where by default, all members are included if not explicitly excluded. /// </summary> private Hashtable CreateInclusiveProjection(object SourceObject) { // // CREATE THE HASH TABLE. // ALL PROJECTIONS ARE "OLD SCHOOL" HASH TABLES. // Hashtable CreatedProjection = new Hashtable(); // // GET THE TYPE OF THE ENTITY. // WE USE THIS TO REFLECT AGAINST THE SOURCE OBJECT SEVERAL TIMES. // Type SourceObjectType = SourceObject.GetType(); // // BY DEFAULT, THIS METHOD INCLUDES ALL MEMBERS UNLESS THEY WERE EXPLICITLY EXCLUDED. // // // PROCESS PROPERTIES. // foreach (PropertyInfo CurrentPropertyInfo in SourceObjectType.GetProperties()) { // // RENDER ALL PROPERTIES IF NOT OTHERWISE SPECIFIED. // if (!_ExcludedPropertyNames.ContainsKey(CurrentPropertyInfo.Name) && !_ExcludedMemberNames.ContainsKey(CurrentPropertyInfo.Name)) { // // THIS PROPERTY IS NOT EXCLUDED - SO INCLUDE IT IN THE PROJECTION. // object CurrentValue = CurrentPropertyInfo.GetValue(SourceObject, null); // // IF THE VALUE IS NOT NULL, THEN INCLUDE IT. // IF THE VALUE IS NULL BUT WE ARE SUPPOSED TO INCLUDE NULL VALUES THEN ALSO INCLUDE IT. // if (CurrentValue != null || _NullValueBehavior == NullValueBehavior.IncludeNulls) { // // WE ARE INCLUDING THIS VALUE IN THE PROJECTION. // if (_MemberRenameMap.ContainsKey(CurrentPropertyInfo.Name)) { CreatedProjection[_MemberRenameMap[CurrentPropertyInfo.Name]] = CurrentValue; } else { CreatedProjection[CurrentPropertyInfo.Name] = CurrentValue; } } } } // // PROCESS FIELDS. // foreach (FieldInfo CurrentFieldInfo in SourceObjectType.GetFields()) { // // INCLUDE ALL FIELDS UNLESS EXPLICITLY EXCLUDED. // if (!_ExcludedFieldNames.ContainsKey(CurrentFieldInfo.Name) && !_ExcludedMemberNames.ContainsKey(CurrentFieldInfo.Name)) { // // THIS FIELD IS NOT EXCLUDED - SO INCLUDE IT IN THE PROJECTION. // object CurrentValue = CurrentFieldInfo.GetValue(SourceObject); // // IF THE VALUE IS NOT NULL, THEN INCLUDE IT. // IF THE VALUE IS NULL BUT WE ARE SUPPOSED TO INCLUDE NULL VALUES THEN ALSO INCLUDE IT. // if (CurrentValue != null || _NullValueBehavior == NullValueBehavior.IncludeNulls) { // // WE ARE INCLUDING THIS VALUE IN THE PROJECTION. // RENAME AS SPECIFIED. // if (_MemberRenameMap.ContainsKey(CurrentFieldInfo.Name)) { CreatedProjection[_MemberRenameMap[CurrentFieldInfo.Name]] = CurrentValue; } else { CreatedProjection[CurrentFieldInfo.Name] = CurrentValue; } } } } return(CreatedProjection); }