Is there way to write some ConfigurationValidatorAttribute or in some other way that will allow either both Prop1 and Prop2 are present or none of them?
EDITED
In the following config file when I'll try to get Domains I want to get runtime exception because domain3 element must have both Prop1 and Prop2 or none of them, but not only one of them!
Just like IsRequired is checked in runtime and throws error if the element doesn't has Name attribute.
<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; }
}
}
Override the PostDeserialize of ConfigurationElement in your
ConfigElementClassThere is a good example on this blog post.