假设我已定义了包含属性AdapterElement : ConfigurationElement
,Type
和Name
的自定义Version
。由于Name
和Version
uniquelly标识了Type
属性,因此我希望强制配置文件以具有以下结构之一:
<adapter type="TypeOfAdapter"/>
<adapter name="NameOfAdapter" version="VersionOfAdapter"/>
我可以使用IsRequired = false
轻松标记这三个属性,并让用户指定所需的组合。但是,以下组合无效,我想禁止它们:
<adapter type="TypeOfAdapter" version="VersionOfAdapter"/>
<adapter type="TypeOfAdapter" name="NameOfAdapter"/>
有没有简单的方法来实现这个目标?
答案 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,没有更明显的方法来验证单个配置部分的多个属性的有效性 - 但对配置元素来说似乎也是如此。