ReadOnlyNameValueCollection (чтение из ConfigurationManager.GetSection) - PullRequest
7 голосов
/ 16 мая 2011

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

<section name="test" type="System.Configuration.NameValueFileSectionHandler" />
<test>
   <add key="foo" value="bar" />
</test>

var test = ConfigurationManager.GetSection("test");

Пока все хорошо. Отладчик показывает, test содержит один ключ, 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?

э-э-э-э-э-э-э?

Приведение к System.Collections.Specialized.NameValueCollection заставляет код работать, но я не совсем понимаю, почему ошибка.

И поиск по ReadOnlyNameValueCollection в MSDN показывает, что документации по этому классу вообще нет. Кажется, не существует. Тем не менее, у меня есть экземпляр этого типа в моем коде.

1 Ответ

14 голосов
/ 16 мая 2011

System.Configuration.ReadOnlyNameValueCollection - это класс internal для сборки System.dll.Так что вы не можете ссылаться на это из своего кода.Это происходит от System.Collections.Specialized.NameValueCollection, однако, поэтому вы можете сделать это с помощью актеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...