Почему intellisense работает с директивой Using, а не при указании типов в пространстве имен? - PullRequest
1 голос
/ 30 августа 2010

Я могу добавить выражение using System.Configuration; в свой код, используя intellisense, но не могу получить никакой intellisense при доступе к типу ConfigurationManager.

Почему intellisense работает при вводе директивы using, но не работает при указании типа из этого пространства имен?

using System.Configuration;

namespace TestDBMSConnection
{
    class Program
    {
        static void Main(string[] args)
        {
            var dataProviderName = ConfigurationManager.AppSettings["provider"];
        }
    }
}

Я могу решить эту проблему, добавив ссылку на System.Configuration, но я не понимаю, почему мне не нужно делать это, чтобы intellisense работал для директивы using.

Ответы [ 2 ]

3 голосов
/ 30 августа 2010

Классы в пространстве имен не обязательно должны находиться в одной сборке.

Некоторые классы в пространстве имен System.Configuration находятся в System.dll (например, SettingsBase ), поканекоторые другие классы находятся в System.Configuration.dll (например, ConfigurationManager ).

IntelliSense может предлагать только классы и пространства имен в ссылочных сборках.Таким образом, если имеется ссылка на System.dll, но нет System.Configuration.dll, IntelliSense может предложить пространство имен System.Configuration и классы System.Configuration, расположенные в System.dll, но не те, которые находятся в System.Configuration.dll.

IntelliSense также может не знать, в какой сборке без ссылок может находиться определенный класс.Поэтому вам необходимо вручную сослаться на файл System.Configuration.dll, прежде чем использовать его.

2 голосов
/ 30 августа 2010

Потому что intellisense для using показывает список известных пространств имен.И на пространство имен System.Configuration уже ссылаются (некоторые классы в этом пространстве имен находятся в system.dll или mscorlib.dll), в то время как класс ConfigurationManager находится в System.Configuration.dll, на который нет ссылок, и, следовательно, intellisense незнать об этом.

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