わかりました、そう.....
<section name="test" type="System.Configuration.NameValueFileSectionHandler" />
<test>
<add key="foo" value="bar" />
</test>
var test = ConfigurationManager.GetSection("test");
ここまでは順調ですね。デバッガーのショーtestには、1つのキーが含まれていますfoo。
しかし、GetSectionが返さobjectれるので、キャストが必要です。
var type = test.GetType();
// FullName: System.Configuration.ReadOnlyNameValueCollection
// Assembly: System
わかりました、これは十分に単純なはずです。それで....
using System;
var test = ConfigurationManager
.GetSection("test") as ReadOnlyNameValueCollection;
エラー!
The type or namespace ReadOnlyNameValueCollection does not exist in the namespace System.Configuration. Are you missing an assembly reference?
エラー...wtf?
コードを機能させるためのキャストSystem.Collections.Specialized.NameValueCollectionですが、エラーの理由がよくわかりません。
また、MSDNで検索すると、ReadOnlyNameValueCollectionこのクラスに関するドキュメントはまったくありません。存在しないようです。それでも、コードにはそのタイプのインスタンスがあります。