public static PropertyInfo GetProperty(Type entityType, string propertyName, VisibilityPropertyType visibility) { if (entityType == null) { return(null); } BindingFlags flags; if (visibility == VisibilityPropertyType.Public) { flags = (BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Instance); } else if (visibility == VisibilityPropertyType.NonPublic) { flags = (BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance); } else { flags = (BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); } PropertyInfo info = entityType.GetProperty(propertyName, flags); if (info != null) { return(info); } //busco enla clase base return(TypeHelper.GetProperty(entityType.BaseType, propertyName, visibility)); }
public static List <PropertyInfo> GetProperties(Type entityType, VisibilityPropertyType getVisibility, VisibilityPropertyType setVisibility, bool onlyValueType) { BindingFlags flags = (BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); List <PropertyInfo> _properties = new List <PropertyInfo>(); PropertyInfo[] infos = entityType.GetProperties(flags); foreach (PropertyInfo info in infos) { if (info.CanRead) { if (!onlyValueType || IsValueType(info.PropertyType)) { //si es privado no lo agrego if (((getVisibility == VisibilityPropertyType.Public && info.GetGetMethod(true).IsPublic) || (getVisibility == VisibilityPropertyType.NonPublic && !info.GetGetMethod(true).IsPublic) || (getVisibility == VisibilityPropertyType.PublicAndNonPublic)) && ((setVisibility == VisibilityPropertyType.Public && info.GetGetMethod(true).IsPublic) || (setVisibility == VisibilityPropertyType.NonPublic && !info.GetGetMethod(true).IsPublic) || (setVisibility == VisibilityPropertyType.PublicAndNonPublic))) { _properties.Add(info); } } } } return(_properties); }
public static MethodInfo GetMethod(Type entityType, string methodName, VisibilityPropertyType visibility) { BindingFlags flags; if (visibility == VisibilityPropertyType.Public) { flags = (BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Instance); } else if (visibility == VisibilityPropertyType.NonPublic) { flags = (BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance); } else { flags = (BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); } return(entityType.GetMethod(methodName, flags)); }