Хорошо, итак .....
<section name="test" type="System.Configuration.NameValueFileSectionHandler" />
<test>
<add key="foo" value="bar" />
</test>
var test = ConfigurationManager.GetSection("test");
Пока все хорошо. Отладчик показывает, что test
содержит один ключ, foo
.
Но GetSection
возвращает объект
, поэтому нам нужно приведение:
var type = test.GetType();
// FullName: System.Configuration.ReadOnlyNameValueCollection
// Assembly: System
Хорошо, это должно быть достаточно просто. Итак ....
using System;
var test = ConfigurationManager
.GetSection("test") as ReadOnlyNameValueCollection;
ошибка!
Тип или пространство имен ReadOnlyNameValueCollection не существует в пространстве имен System.Configuration. Вам не хватает ссылки на сборку?
err ... wtf?
Приведение к System.Collections.Specialized.NameValueCollection
заставляет код работать, но я действительно не понимаю, почему ошибка .
И поиск ReadOnlyNameValueCollection
в MSDN показывает, что документации по этому классу вообще нет. Кажется, его не существует. Но в моем коде есть экземпляр этого типа.