I. *_*edy 5 asp.net namespaces httphandler
我有一个名为 Handler 的 HttpHandler,我将其编译成 DLL 并放入 ASP.NET 应用程序的 /bin 文件夹中。然后我有一个 .ashx 文件:
<% @ webhandler language="C#" class="Handler" %>
Run Code Online (Sandbox Code Playgroud)
但我收到无法创建类型“处理程序”错误。
但是,如果我将 Handler 包装在无偿的命名空间中,例如foo,并将 .ashx 更改为
<% @ webhandler language="C#" class="foo.Handler" %>
Run Code Online (Sandbox Code Playgroud)
效果很好。为什么我不能使用无命名空间,呃,默认命名空间?Microsoft 在 msdn 网站上的许多 HttpHandler 示例中省略了命名空间。
这是因为 .Net 程序集的性质。任何引用类型或值类型都必须包含在命名空间中。命名空间用于逻辑分组。在您的情况下,您的类“Handler”是用户定义的引用类型。任何程序集都可以在根处具有一个或多个根命名空间,但它不能在根处具有引用类型或值类型。事实上,当您在项目属性的“应用程序”选项卡中创建新的类库项目时,它有一个选项可以为您的类库项目指定默认命名空间。因此,每当您在项目中创建新类时,它都会将其包装在 ProjectProperties.Application.DefaultNameSpace 中指定的默认名称空间周围。
如果您希望看到此操作,请尝试使用 .Net SDK 附带的 IL Disassemblar 打开您的 .Net 程序集。
| 归档时间: |
|
| 查看次数: |
1903 次 |
| 最近记录: |