Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }