次のカスタム構成セクションをマップする方法を見つける/理解するのに問題があります。
<section>
<collection1>
<subitem1 ... />
<subitem1 ... />
</collection1>
<collection2>
<subitem2 ... />
<subitem2 ... />
</collection2>
</section>
単一のサブコレクションの場合、次のように機能します。
public class Section : ConfigurationSection
{
[ConfigurationProperty("", IsRequired = true, IsDefaultCollection = true)]
[ConfigurationCollection(typeof(SubItem1Collection), AddItemName = "collection1")]
public SubItem1Collection Collection1
{
get { return (SubItem1Collection)this[string.Empty]; }
set { this[string.Empty] = value; }
}
}
2 番目のコレクションを追加しようとすると、実行されません。
public class Section : ConfigurationSection
{
[ConfigurationProperty("", IsRequired = true, IsDefaultCollection = true)]
[ConfigurationCollection(typeof(TemplateCollection), AddItemName = "collection1")]
public SubItem1Collection Collection1
{
get { return (SubItem1Collection)this[string.Empty]; }
set { this[string.Empty] = value; }
}
[ConfigurationProperty("", IsRequired = true, IsDefaultCollection = true)]
[ConfigurationCollection(typeof(SubItem2Collection), AddItemName = "collection2")]
public SubItem2Collection Collection2
{
get { return (SubItem2Collection)this[string.Empty]; }
set { this[string.Empty] = value; }
}
}
エラーは次のとおりです。
タイプ「SubItem1Collection」のオブジェクトをタイプ「SubItem2Collection」にキャストできません。
エラーは明らかに indexer にありthis[string.Empty];
ます。誰かがこれについて正しい方向に私を向けることができますか?