Why does StringValidator always fail for custom configuration section?

后端 未结 4 1634
一整个雨季
一整个雨季 2021-02-19 09:41

I have created a custom configuration section in a c# class library by inheriting from ConfigurationSection. I reference the class library in my web application (a

4条回答
  •  离开以前
    2021-02-19 10:04

    I was able to work around this issue by using an explicit ConfigurationProperty as the key to my properties collection rather than a string, as per the following implementation:

    public class AssemblyElement : ConfigurationElement
    {
        private static readonly ConfigurationProperty _propAssembly;
        private static readonly ConfigurationPropertyCollection _properties;
    
        static AssemblyElement()
        {
            _propAssembly = new ConfigurationProperty("assembly", typeof(string), null, null, new StringValidator(1), ConfigurationPropertyOptions.IsKey | ConfigurationPropertyOptions.IsRequired);
            _properties = new ConfigurationPropertyCollection();
            _properties.Add(_propAssembly);
        }
    
        internal AssemblyElement() { }
        public AssemblyElement(string assemblyName)
        {
            this.Assembly = assemblyName;
        }
    
        [ConfigurationProperty("assembly", IsRequired = true, IsKey = true, DefaultValue = "")]
        [StringValidator(MinLength = 1)]
        public string Assembly
        {
            get { return (string)base[_propAssembly]; }
            set { base[_propAssembly] = value; }
        }
    
        internal AssemblyName AssemblyName
        {
            get { return new AssemblyName(this.Assembly); }
        }
    
        protected override ConfigurationPropertyCollection Properties
        {
            get { return _properties; }
        }
    }
    

    (This code is closely modeled after the code reflected from the AssemblyInfo configuration element class. I still wish I didn't have to duplicate my validations, but at least this code allows me to specify a blank default value while still requiring a value to be entered.)

提交回复
热议问题