Как проверить, что оба свойства отсутствуют или отсутствуют в элементе конфигурации?
Есть ли способ написать некоторые ConfigurationValidatorAttribute
или каким-либо другим способом, который позволит либо оба Prop1
а также Prop2
присутствуют или их нет?
РЕДАКТИРОВАНИЕ
В следующем файле конфигурации, когда я попытаюсь получить Domains
Я хочу получить исключение во время выполнения, потому что domain3
элемент должен иметь оба Prop1
а также Prop2
или ни один из них, но не только один из них!
Как 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; }
}
}
1 ответ
Решение
Переопределите PostDeserialize элемента конфигурации в вашем ConfigElement
Учебный класс
protected override void PostDeserialize()
{
base.PostDeserialize();
//Do what you want
}
В этом посте есть хороший пример.