public virtual IEnumerable <PropertyAndField <TModel> > GetPropertyInfoes (ARBaseForm Model, BindingFlags bindFlags, PropertyFilterDelegate filter) { if (Model == null) { throw new ArgumentNullException("Model"); } Type ModelType = typeof(TModel); var properties = ModelType.GetProperties(bindFlags); List <PropertyAndField <TModel> > list = new List <PropertyAndField <TModel> >(); foreach (var p in properties) { if (filter != null) { if (!filter(Model, p)) { continue; } } PropertyAndField <TModel> pf = new PropertyAndField <TModel>(); pf.DatabaseId = GetDatabaseIdFromPropertyInfo(p); pf.DatabaseName = GetDatabaseNameFromPropertyInfo(p); pf.DatabaseType = GetDataTypeFromPropertyInfo(p); pf.AccessLevel = GetAccessLevelFromPropertyInfo(p); pf.Property = p; //pf.Getter //pf.Setter list.Add(pf); } return(list); }
public void SetEntry(T entry, PropertyFilterDelegate filter) { if (entry == null) { throw new ArgumentNullException("entry"); } ModelMeteData <T> meta = new ModelMeteData <T>(); meta.FormName = _metaProvider.GetFormNameFromModelType(); var entryIdProp = _metaProvider.GetEntryIdPropertyInfo(); if (entryIdProp == null) { throw new CustomAttributeFormatException("Can not find EntryId's PropertyInfo."); } meta.EntryId = (string)entryIdProp.GetValue(entry); meta.Model = entry; var props = _metaProvider.GetPropertyInfoes(entry as ARBaseForm, BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance, filter ); meta.Properties = new List <PropertyAndField <T> >(); foreach (var p in props) { if ((p.AccessLevel & ModelBinderAccessLevel.OnlyUnBind) == ModelBinderAccessLevel.OnlyUnBind) { meta.Properties.Add(p); } } SetEntry(meta); }