2012-01-22 7 views
1

私は、TypeNameVersionという特性を持つカスタムAdapterElement : ConfigurationElementを定義しました。私は簡単にIsRequired = falseと、それらの3つのプロパティをマークし、ユーザーが組み合わせを指定することができます可能性がConfigurationElement - 属性の組み合わせですか?

<adapter type="TypeOfAdapter"/> 
<adapter name="NameOfAdapter" version="VersionOfAdapter"/> 

NameVersionがuniquelly Typeプロパティを識別するので、私は次構造の1つを持っているに設定ファイルを強制したいと思います欲しい。しかし、以下の組み合わせは有効ではありません。私はそれらを禁止したいと思います:

<adapter type="TypeOfAdapter" version="VersionOfAdapter"/> 
<adapter type="TypeOfAdapter" name="NameOfAdapter"/> 

これを達成する簡単な方法はありますか?

答えて

1

私はこれについての答えを見つけるために少し読んでいなければなりませんでした。

AdapterElementクラスの有効性をPostDeserialiseチェックで確認する方法はありますか?

protected override void PostDeserialize() 
{ 
    bool isValid = Type != null && Name == null && Version == null 
       || Type == null && Name != null && Version != null; 
    if (!isValid) 
    { 
     throw new ArgumentException("Must specify either Type or Name and Version"); 
    } 
    base.PostDeserialize(); 
} 

a blog I foundによると、単一の構成部に複数の属性の妥当性を検証する、より明確な方法はありません - しかし、あまりにもconfiguation要素に対して真であるように思われます。

関連する問題