public PropertyDescriptor[] BuildPropDescriptors(IPropBag propBag)
        {
            List <KeyValuePair <string, ValPlusType> > propDefs = propBag.GetAllPropNamesValuesAndTypes().ToList();

            PropertyDescriptor[] descriptors = new PropertyDescriptor[propDefs.Count + _basePropertyDescriptors.Count];

            int mainPdPtr;

            for (mainPdPtr = 0; mainPdPtr < _basePropertyDescriptors.Count; mainPdPtr++)
            {
                descriptors[mainPdPtr] = _basePropertyDescriptors[mainPdPtr];
            }

            for (int pdPtr = 0; pdPtr < propDefs.Count; pdPtr++)
            {
                KeyValuePair <string, ValPlusType> kvp = propDefs[pdPtr];

                PropItemPropertyDescriptor <IPropBag> propItemTypeDesc =
                    new PropItemPropertyDescriptor <IPropBag>(kvp.Key, kvp.Value.Type, new Attribute[] { });

                descriptors[mainPdPtr++] = propItemTypeDesc;
            }

            return(descriptors);
        }
        public PropertyDescriptor[] BuildPropDescriptors(PropModelType pm /*, IPropFactory pf*/)
        {
            PropertyDescriptor[] descriptors = new PropertyDescriptor[pm.Count];

            List <IPropItemModel> propItems = pm.GetPropItems().ToList();

            for (int pdPtr = 0; pdPtr < propItems.Count; pdPtr++)
            {
                IPropItemModel pItem = propItems[pdPtr];

                PropItemPropertyDescriptor <IPropBag> propItemTypeDesc =
                    new PropItemPropertyDescriptor <IPropBag>(pItem.PropertyName, pItem.PropertyType, new Attribute[] { });

                descriptors[pdPtr] = propItemTypeDesc;
            }

            return(descriptors);
        }