Exemplo n.º 1
0
        /// <summary>
        /// Gets the entity property info collection for the specfied object
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static List <EntityPropertyInfo> GetEntityPropertyInfoList(Type entityType)
        {
            List <EntityPropertyInfo> properties       = new List <EntityPropertyInfo>();
            InspectionPolicy          defaultPolicy    = InspectionPolicy.OptOut;
            EntityLoaderAttribute     inspectionPolicy = entityType.GetCustomAttribute <EntityLoaderAttribute>();

            if (null != inspectionPolicy)
            {
                defaultPolicy = inspectionPolicy.InspectionPolicy;
            }

            foreach (PropertyInfo property in entityType.GetProperties())
            {
                EntityPropertyInfo info = new EntityPropertyInfo(property);
                // If we have no inspection policy, by default include all properties
                if (null == inspectionPolicy)
                {
                    properties.Add(info);
                }
                else
                {
                    switch (defaultPolicy)
                    {
                    case InspectionPolicy.OptIn:
                        if (info.DataInclude)
                        {
                            properties.Add(info);
                        }
                        break;

                    case InspectionPolicy.OptOut:
                        if (!info.DataExclude)
                        {
                            properties.Add(info);
                        }
                        break;

                    default:
                        break;
                    }
                }
            }

            return(properties);
        }
 public EntityLoaderAttribute(InspectionPolicy inspectionPolicy)
 {
     InspectionPolicy = inspectionPolicy;
 }