Hej! Du kan anropa baskallsen genom MyBase och komma åt variabeln, Tack för svaret! <code> Det fungerade dessvärre ej, jag har fyra olika klasser i en codebehind-sida, varav en klass heter links och är huvudklassen (det är där anslutningssträngen ska finnas) och ärver Page, medan de andra tre klasserna ärver UserControl. Det är för att dom ärver egenskaper från en helt annan klass.Variabel i en klass som nås från en annan klass?
Jag har en klass, låt oss säga att den heter main och ärver Page. I den klassen har jag en variabel som heter CnStr där anslutningssträngen till en databas finns.. Jag undrar hur jag ärver variabeln från klassen main till en annan klass (i detta fall klassen sub_main), som ärver UserControl?
I mitt fall så kan man tydligen inte heller använda Server-objektet i en klass som ärver UserControl.
<code>Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
Public Class default : Inherits Page
Dim CnStr As string = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("db_links.mdb")
Sub Page_Load()
'exempelvis en anslutning till en databas
End Sub
End Class
Public Class sub_main : Inherits UserControl
Sub Page_Load()
'här ska man kunna använda variabeln CnStr från klassen main, i en databasanslutning
End Sub
End Class</code>
Problemen är alltså:
- jag vill använda en variabel över flera klasser
- Server-objektet kan inte användas i en klass som ärver UserControl
Som alltid tacksam för hjälp. Sv: Variabel i en klass som nås från en annan klass?
detta går med alla variablar som är public. Du kan även skapa en property i basklassen vilket jag tycker är snyggare som du sedan anropar via MyBase.
MyBase.CnStr
/Fredrik Normén NSQUARED2
MCAD, MCSD
http://www.nsquared2.netSv: Variabel i en klass som nås från en annan klass?
Skulle du vilja visa mig lite exempelkod?
Jag testade att skriva
<code>property CnStr As string = "provider...."</code>
samt
<code>public property CnStr As string = "provider...."</code>
i klassen main och sen testade jag att anropa (i klassen sub_main) med mybase.CnStr, fast det fungerade inte. :(Sv: Variabel i en klass som nås från en annan klass?
Private CnStr As String
</code>
I din basklass lägger du till:
<code>
Property ConnString() As String
Get
Return CnStr
End Get
Set(ByVal Value As string)
CnStr = Value
End Set
End Property
</code>
I din sub klass så kommer du åt den med mybase.ConnString
/Fredrik Normén NSQUARED2
http://www.nsqaured2.netSv: Variabel i en klass som nås från en annan klass?
Jag skriver in din kod i links-klassen, och anropar anslutningssträngen med bybase.db (i mitt fall), men i klasserna som ärver UserControl får jag felmeddelandet att db inte tillhör dem. :(Sv: Variabel i en klass som nås från en annan klass?
Du måste lägga till variablen och dess egenskaper även i de klasser som ärver UserControl.
/Fredrik Normén NSQUARED2
http://www.nsquared2.net