Как проверить, что оба свойства отсутствуют или отсутствуют в элементе конфигурации?

Есть ли способ написать некоторые 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
        }

В этом посте есть хороший пример.

Другие вопросы по тегам