我有三个项目的解决方案:
>项目1 – 可重复使用的逻辑/方法(适用于所有其他项目)
>项目2 – 网站
>项目3 – Web应用程序(项目2转换为Web应用程序)
在项目1中,我有这个代码:
Imports Microsoft.VisualBasic Imports System.Data Imports System.Data.SqlClient Imports System.Configuration Imports System.Web Imports System.Runtime.CompilerServices Namespace MyCompany Public Module DataExtensionMethods <Extension()> _ Public Function SortByColumn(ByVal dt As DataTable,ByVal SortString As String) As DataTable ' Amazing stuff here... Return dt End Function End Module End Namespace
在老式的Project 2网站中,通过向web.config添加以下内容,可以轻松访问此扩展方法:
<pages controlRenderingCompatibilityVersion="4.0" validateRequest="true" clientIDMode="AutoID"> <namespaces> <add namespace="MyCompany.DataExtensionMethods"/> </namespaces> </pages>
扩展方法立即可用于对DataTable变量的所有引用.
但是,我不能在应用程序范围内使用它在Project 3(Web应用程序)中工作.
在每个页面中,我可以添加:
Imports MyCompany.DataExtensionMethods
然后,这使得扩展方法可用,但是如何在每个页面上不必使用Imports的情况下实现相同的应用程序范围?
在项目2和3中,我使用“添加引用”对话框定义了对项目1的引用.复选框显示仍然存在,但Project 3无法看到Project 1的逻辑.似乎有很多人看到了same behaviour with WebAPI,但没有看到网页应用.
解决方法
在VB中,您可以通过在解决方案资源管理器中右键单击项目,选择属性来为项目设置全局导入的命名空间.
在引用选项卡上,底部是“导入的命名空间”部分.您可以在那里添加名称空间MyCompany.DataExtensionMethods,它就像您在所有源文件中键入Imports MyCompany.DataExtensionMethods一样.