1

有没有办法写一些ConfigurationValidatorAttribute或以其他方式允许两者Prop1Prop2存在或都不存在?

已编辑

在下面的配置文件中,当我尝试获取时,Domains我想获取运行时异常,因为domain3元素必须同时具有Prop1Prop2不具有它们,但不能仅具有其中一个!

就像IsRequired在运行时检查并在元素没有Name属性时抛出错误一样。

<MySection>
        <Domains>
          <Domain Name="domain1" Prop1="1" Prop2="4" /> 
          <Domain Name="domain2" /> 
          <Domain Name="domain3" Prop1="1" /> 
        </Domains>         
    </MySection>

public class ConfigElement : ConfigurationElement
{     
    [ConfigurationProperty("Name", IsRequired = true)]
    public string Name
    {
        get { return (string)this["Name"]; }
        set { this["Name"] = value; }
    }        

    [ConfigurationProperty("Prop1")]
    public int Prop1
    {
        get { return (int)this["Prop1"]; }
        set { this["Prop1"] = value; }
    }

    [ConfigurationProperty("Prop2")]
    public int Prop2
    {
        get { return (int)this["Prop2"]; }
        set { this["Prop2"] = value; }
    }
}
4

1 回答 1

2

在你的类中覆盖ConfigurationElement的PostDeserializeConfigElement

 protected override void PostDeserialize()
        {
            base.PostDeserialize();
            //Do what you want
        }

这篇博文中有一个很好的例子。

于 2012-07-25T08:24:00.170 回答