/// <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; }