ConfigurationElement - 属性的组合?

时间:2012-01-22 16:03:14

标签: .net-2.0 configurationelement configurationproperty

假设我已定义了包含属性AdapterElement : ConfigurationElementTypeName的自定义Version。由于NameVersion uniquelly标识了Type属性,因此我希望强制配置文件以具有以下结构之一:

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

我可以使用IsRequired = false轻松标记这三个属性,并让用户指定所需的组合。但是,以下组合无效,我想禁止它们:

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

有没有简单的方法来实现这个目标?

1 个答案:

答案 0 :(得分: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,没有更明显的方法来验证单个配置部分的多个属性的有效性 - 但对配置元素来说似乎也是如此。