예제 #1
0
        public override IEnumerable <PropertyAndField <TModel> > GetPropertyInfoes
            (System.Reflection.BindingFlags bindFlags, PropertyFilterDelegate2 filter)
        {
            Type ModelType = typeof(TModel);
            IEnumerable <PropertyInfo>        properties = _properties.Select(e => e.Key);
            List <PropertyAndField <TModel> > list       = new List <PropertyAndField <TModel> >();

            foreach (var p in properties)
            {
                if (filter != null)
                {
                    if (!filter(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       = _properties[p].Getter;
                pf.Setter       = _properties[p].Setter;
                list.Add(pf);
            }

            return(list);
        }
예제 #2
0
        protected IList <T> GetListEntryStatictisc(
            String Qulification,
            Nullable <UInt32> TargetFieldId,
            ARStatictisc ARStat,
            PropertyFilterDelegate2 filter
            )
        {
            ModelMeteData <T> metaData = new ModelMeteData <T>();

            metaData.FormName = _metaProvider.GetFormNameFromModelType();
            var props = _metaProvider.GetPropertyInfoes(
                BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance,
                filter
                );

            metaData.Properties = new List <PropertyAndField <T> >();
            foreach (var p in props)
            {
                if ((p.AccessLevel & ModelBinderAccessLevel.OnlyBind) == ModelBinderAccessLevel.OnlyBind)
                {
                    metaData.Properties.Add(p);
                }
            }

            return(GetListEntryStatictisc(ARStat, Qulification, TargetFieldId, metaData));
        }
예제 #3
0
        public IList <T> GetEntryList(
            string qualification,
            uint StartIndex,
            PropertyFilterDelegate2 filter,
            uint?RetrieveCount,
            TotalMatch totalMatch,
            List <ARSortInfo> sortInfo
            )
        {
            ModelMeteData <T> metaData = new ModelMeteData <T>();

            metaData.FormName = _metaProvider.GetFormNameFromModelType();
            var props = _metaProvider.GetPropertyInfoes(
                BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance,
                filter
                );

            metaData.Properties = new List <PropertyAndField <T> >();
            foreach (var p in props)
            {
                if ((p.AccessLevel & ModelBinderAccessLevel.OnlyBind) == ModelBinderAccessLevel.OnlyBind)
                {
                    metaData.Properties.Add(p);
                }
            }

            return(GetEntryList(StartIndex, qualification, metaData, RetrieveCount, totalMatch, sortInfo));
        }
예제 #4
0
        //public string CreateEntry(List<ARFieldValue> FieldValueList)
        //{
        //    string formName = _metaProvider.GetFormNameFromModelType(typeof(T));
        //    ModelMeteData<T> metaData = new ModelMeteData<T>();
        //    metaData.FieldValeList = FieldValueList;
        //    metaData.FormName = formName;
        //    return CreateEntry(metaData);
        //}

        public string CreateEntry(T entry, PropertyFilterDelegate2 filter)
        {
            if (entry == null)
            {
                throw new ArgumentNullException("entry");
            }
            ModelMeteData <T> metaData = new ModelMeteData <T>();

            metaData.FormName = _metaProvider.GetFormNameFromModelType();
            metaData.Model    = entry;
            var props = _metaProvider.GetPropertyInfoes(
                BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance,
                filter
                );

            metaData.Properties = new List <PropertyAndField <T> >();

            foreach (var p in props)
            {
                if ((p.AccessLevel & ModelBinderAccessLevel.OnlyUnBind) == ModelBinderAccessLevel.OnlyUnBind)
                {
                    metaData.Properties.Add(p);
                }
            }

            return(CreateEntry(metaData));
        }
예제 #5
0
        public virtual IEnumerable <PropertyAndField <TModel> > GetPropertyInfoes
            (BindingFlags bindFlags, PropertyFilterDelegate2 filter)
        {
            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(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);
        }
예제 #6
0
        public T GetEntry(string EntryId, PropertyFilterDelegate2 filter)
        {
            string            formName = _metaProvider.GetFormNameFromModelType();
            ModelMeteData <T> metaData = new ModelMeteData <T>();

            //metaData.FieldIdList = FieldIdList;
            metaData.FormName = formName;
            metaData.EntryId  = EntryId;
            var props = _metaProvider.GetPropertyInfoes(
                BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance,
                filter
                );

            metaData.Properties = new List <PropertyAndField <T> >();
            foreach (var p in props)
            {
                if ((p.AccessLevel & ModelBinderAccessLevel.OnlyBind) == ModelBinderAccessLevel.OnlyBind)
                {
                    metaData.Properties.Add(p);
                }
            }

            return(GetEntry(metaData));
        }