HttpHandler использует пространство имен по умолчанию - PullRequest
4 голосов
/ 20 марта 2009

У меня есть HttpHandler с именем Handler, который я компилирую в DLL и помещаю в папку / bin моего приложения ASP.NET. Тогда у меня есть файл .ashx:

<% @ webhandler language="C#" class="Handler" %> 

но я получаю не могу создать тип 'Обработчик' ошибка.

Однако, если я оберну Handler в бесплатное пространство имен, скажем foo и изменим .ashx на

<% @ webhandler language="C#" class="foo.Handler" %> 

работает нормально. Почему я не могу использовать пространство имен, то есть пространство имен по умолчанию? Microsoft пропускает пространство имен во многих примерах HttpHandlers на веб-сайте msdn.

1 Ответ

3 голосов
/ 14 апреля 2009

Это из-за природы .Net Ассамблей. Любой ссылочный тип или значение типа должен быть обернут вокруг пространства имен. Пространства имен используются для логической группировки. В вашем случае ваш класс 'Handler' является пользовательским ссылочным типом. Любая сборка может иметь одно или несколько корневых пространств имен в корне, но она не может иметь ссылочный тип или тип значения в корне. Фактически, когда вы создаете новый проект библиотеки классов на вкладке Приложения в свойствах проекта, у него есть возможность указать пространство имен по умолчанию для вашего проекта библиотеки классов. Таким образом, всякий раз, когда вы создаете новый класс в своем проекте, он оборачивает его вокруг этого пространства имен по умолчанию, указанного в ProjectProperties.Application.DefaultNameSpace.

Если вы хотите увидеть это в действии, попробуйте открыть сборку .Net с помощью IL Disassemblar, поставляемого с .Net SDK.

...