1

両方を許可し、存在するか、または存在しないConfigurationValidatorAttributeかのいずれかを許可するいくつかまたは他の方法で書く方法はありますか?Prop1Prop2

編集済み

次の設定ファイルでは、取得しようとすると、実行時例外Domainsを取得したいと思います。これは、要素に両方が含まれている必要があるため、または含まれていない必要があるためです。domain3Prop1Prop2

実行時にチェックされ、要素に属性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のPostDeserializeをオーバーライドしますConfigElement

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

このブログ投稿には良い例があります。

于 2012-07-25T08:24:00.170 に答える