从另一个文件ASP.NET VB.NET调用类

时间:2010-04-22 13:55:30

标签: vb.net import

假设我在class1.vb中有这样的类:

Public Class my_class
  Public Sub my_sub()
   Dim myvar as String
   myvar = 10
   Session("myvar") = myvar
  End Sub
End Class

然后我有一个带有代码隐藏文件的ASP.NET页面,default.aspx和default.aspx.vb,我想调用my_class。我正在做以下事情,但它不起作用:

Imports my_app.my_class
Partial Public Class _default
   Inherits System.Web.UI.Page
 Protected Sub Page_Load(ByVal sender as Object, ByVal e as System.EventArgs) Handles Me.Load
   my_class()
 End Sub
End Class

我得到“对非共享成员的引用需要对象引用”

3 个答案:

答案 0 :(得分:3)

尝试导入包含类的命名空间,而不是类本身。

所以不要这样:

Imports my_app.my_class

这样做:

Imports my_app

VB.NET将名称空间导入文件范围,以帮助编译器解析不完全限定的类型名称。这意味着您可以自由地使用此代码文件中my_app命名空间中声明的所有类型,而不使用my_app作为类型名称的前缀。

好的,完成后,您需要切换Page_Load的内容以创建my_class的实例,如下所示:

Dim foo As New my_class
my_class.my_sub()

现在你有一个名为my_class的{​​{1}}实例,你可以在其上调用实例方法。

您可以做的另一件事是使foo成为my_sub方法,这样您就不必创建实例了:

Shared

如果您这样做,那么您无需创建Public Shared Sub my_sub() 的实例来致电my_class - 您可以直接致电my_sub

my_sub

答案 1 :(得分:2)

Imports my_app.my_class
Partial Public Class _default
   Inherits System.Web.UI.Page
 Protected Sub Page_Load(ByVal sender as Object, ByVal e as System.EventArgs) Handles Me.Load
       Dim myClass as new my_class()
    myClass.my_sub()
 End Sub
End Class

答案 2 :(得分:1)

你的意思是你想在my_class上调用my_sub()吗?您可以将其标记为共享方法,以便可以将其称为my_class.my_sub()

实例化它的一个实例:

Dim myclass as new my_class()
myclass.my_sub()