public virtual IEnumerable <IModelMemberInfo> GetProperties(TypeInfo type, Func <PropertyInfo, bool> propertySelector = null) => TryGetValue(type.AsType(), out var infos) ? infos : ModelingHelpers.GetCompatibleModelProperties(type, propertySelector);
public virtual IEnumerable <IModelMemberInfo> GetFields(TypeInfo type, Func <FieldInfo, bool> fieldSelector = null) => TryGetValue(type.AsType(), out var infos) ? infos : ModelingHelpers.GetCompatibleModelFields(type, fieldSelector);
public virtual IEnumerable <IModelValueMemberInfo> GetValueMembers(TypeInfo type, Func <PropertyInfo, bool> propertySelector = null, Func <FieldInfo, bool> fieldSelector = null) => TryGetValue(type.AsType(), out var infos) ? infos.OfType <IModelValueMemberInfo>() : ModelingHelpers.GetCompatibleModelValueMembers(type, propertySelector, fieldSelector);