わかりました、そう.....
<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
このクラスに関するドキュメントはまったくありません。存在しないようです。それでも、コードにはそのタイプのインスタンスがあります。