c# how to validate all ConfigurationElement properties upfront?
我有几个自定义的配置元素(从configurationElement派生的类),一些属性具有验证属性,另一些是枚举类型。
问题是可以正确创建配置对象,但只有在访问属性时才会引发异常。(在这种情况下,字符串不会解析为任何已知的枚举值)。
我的问题是,在程序启动时,我能否确保在继续之前,app.config文件中的任何自定义部分都没有问题?
谢谢,Radek
鉴于该样本含有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class MyConfigurationSection : ConfigurationSection { [ConfigurationProperty(name:"myProperty")] public TestEnum MyProperty => (TestEnum) Enum.Parse(typeof(TestEnum), Convert.ToString(base["myProperty"])); } public enum TestEnum { A = 1, B = 2 } <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="myConfigurationSection" type="ValidatedConfigurationSection.MyConfigurationSection, ValidatedConfigurationSection"/> </configSections> <myConfigurationSection myProperty="NoSuchValueInEnum"/> </configuration> |
如果
1 2 3 4 5 | private void ValidateSection(object section) { var context = new ValidationContext(section); Validator.ValidateObject(section, context); } |
对象本身不需要验证属性。