public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
        {
            var propDescArray = base.GetProperties(new Attribute[] { new ConfigTagAttribute() });


            List <PropertyDescriptor> descList = new List <PropertyDescriptor>();

            foreach (PropertyDescriptor propdesc in propDescArray)
            {
                var existsAttributes                      = propdesc.Attributes.Cast <Attribute>();
                ConfigTagAttribute   configTag            = existsAttributes.Where(t => t.GetType() == typeof(ConfigTagAttribute)).First() as ConfigTagAttribute;
                BrowsableAttribute   browsableAttribute   = null;
                DisplayNameAttribute displayAttribute     = null;
                DescriptionAttribute descriptionAttribute = null;
                CategoryAttribute    categoryAttribute    = null;

                String displayName = configTag.Name;
                if (String.IsNullOrEmpty(displayName))
                {
                    displayName = propdesc.DisplayName;
                }

                displayAttribute = new DisplayNameAttribute(displayName);

                browsableAttribute = new BrowsableAttribute(configTag.IsFindable);

                String description = configTag.Description;
                if (configTag.IsEncrypted && !String.IsNullOrEmpty(description))
                {
                    description = $"(🔑)" + description;
                }
                descriptionAttribute = new DescriptionAttribute(description);

                categoryAttribute = new CategoryAttribute(configTag.Category);

                var constAttributes = new List <Attribute>(new Attribute[] {
                    browsableAttribute,
                    categoryAttribute,
                    displayAttribute,
                    descriptionAttribute,
                });
                if (AgilityConfig.IsUIDesign)
                {
                    EditorAttribute editor = this.GetEditorAttribute(configTag.UIEditor);
                    if (editor != null)
                    {
                        constAttributes.Add(editor);
                    }
                }
                var prop = TypeDescriptor.CreateProperty(_instanceType, propdesc.Name, propdesc.PropertyType, constAttributes.ToArray());
                descList.Add(prop);
            }
            var descCollection = new PropertyDescriptorCollection(descList.ToArray());

            return(descCollection);
        }
예제 #2
0
        public static ConfigTagAttribute GetConfigTag(PropertyInfo info)
        {
            ConfigTagAttribute attribute = null;

            var attrs = info.GetCustomAttributes(typeof(ConfigTagAttribute), false);

            if (attrs.Length > 0)
            {
                attribute = attrs[0] as ConfigTagAttribute;
            }

            return(attribute);
        }