ReadOnlyNameValueCollection (чтение из ConfigurationManager.GetSection)

Хорошо, итак .....

<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 показывает, что документации по этому классу вообще нет. Кажется, его не существует. Но в моем коде есть экземпляр этого типа.

7
задан fearofawhackplanet 16 May 2011 в 14:56
поделиться