webForumDet fria alternativet

Variabel i en klass som nås från en annan klass?

.NET

4 svar · 353 visningar · startad av m_soderlund

Medlem sedan sep. 20026 425 inlägg
Frågan#1

Hej!
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. :(

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

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. :)

Medlem sedan juni 20022 599 inlägg
#2

jag vill använda en variabel över flera klasser

Jag tror du tänker fel när du vill lösa det med arv. Varför helt enkelt inte skicka in värdet av variabeln i instanser av sub_main via konstruktorn, en publik metod eller en property?

Server-objektet kan inte användas i en klass som ärver UserControl

Jo. Server-objektet finns tillgängligt som en statisk property i HTTPContext.Current. (Och även om det varit så illa att den inte gjort det så hade du kunnat skicka över en referens till det med metoden ovan.)

Medlem sedan sep. 20026 425 inlägg
#3

Tack för svaret, niko! :)
Skulle du vilja visa mig lite exempelkod? (Eller någon annan som kan detta bättre än jag..?)

Medlem sedan juni 20022 599 inlägg
#4

Tja, nu kan jag inte särskilt mycket om just UserControls eller ASP.NET så det är möjligt att det jag skrev om konstruktorer inte riktigt stämmer i det här fallet. Men du borde iaf kunna skicka in din connectionstring via en public property ungefär som på den här sidan: http://www.aspfree.com/print/1049,0/

Vad gäller server-objektet så är det väl mest en fråga om att använda det rakt av:

Dim VårNuvarandeMapp As String
VårNuvarandeMapp = HttpContext.Current.Server.MapPath(".")
Medlem sedan sep. 20026 425 inlägg
#5

Tack så mycket, det fungerade utmärkt. :)

251 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)