3 Stimmen

Aufruf einer Klasse aus einer anderen Datei ASP.NET VB.NET

Sagen wir, ich habe eine Klasse wie diese in class1.vb:

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

Dann habe ich eine ASP.NET-Seite mit einer Code-Behind-Datei, default.aspx und default.aspx.vb, und ich möchte my_class aufrufen. Ich tue das Folgende, aber es funktioniert nicht:

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

Ich erhalte die Meldung "Verweis auf ein nicht gemeinsam genutztes Mitglied erfordert einen Objektverweis".

3voto

Andrew Hare Punkte 332190

Versuchen Sie, den Namespace zu importieren, der die Klasse enthält, nicht die Klasse selbst.

Also stattdessen dies:

Imports my_app.my_class

dies tun:

Imports my_app

VB.NET importiert Namespaces in den Dateibereich, um dem Compiler zu helfen, Typnamen aufzulösen, die nicht voll qualifiziert sind. Das bedeutet, dass Sie alle Typen verwenden können, die in der Datei my_app Namespace in dieser Codedatei, ohne dem Typnamen das Wort my_app .

Okay, sobald Sie das getan haben, müssen Sie den Inhalt von Page_Load zur Erstellung einer Instanz von my_class wie diese:

Dim foo As New my_class
my_class.my_sub()

Jetzt haben Sie eine Instanz von my_class genannt. foo und Sie können Instanzmethoden darauf aufrufen.

Eine andere Möglichkeit wäre, dass Sie my_sub a Shared Methode, damit Sie keine Instanz erstellen müssen:

Public Shared Sub my_sub()

Wenn Sie dies tun, müssen Sie keine Instanz von my_class anrufen my_sub - können Sie anrufen my_sub direkt:

my_class.my_sub()

2voto

derek Punkte 4851
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

1voto

Chris W Punkte 3284

Meinen Sie, dass Sie my_sub() auf my_class aufrufen wollen? Sie können es entweder als shared methog markieren, so dass es aufgerufen werden kann als my_class.my_sub()

oder

eine Instanz davon instanziieren:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X