21. september 2005 - 00:20Der er
11 kommentarer og 1 løsning
Newbie spørgsmål om globale variabler
Hej...
Jeg er ny på VB.NET fronten, så dette spg. er muligvis meget enkelt.
Jeg har lavet en startdialog, som er en login dialog, hvor der slåes op i en database på brugernavn+password. En login funktion retunerer UserId, og hvis dette er større end 0, åbnes hoved dialog boksen.
Hvordan pokker gør man det UserId "globalt" så jeg ved hvem jeg har med at gøre i de efterfølgende dialoger? I gamle asp dage brugte jeg somregel en session("UserId") - så i bund og grund søger jeg efter en tilsvarende ting, eller blot forklaret hvordan man gør i stedet.
Den første mulighed lyder umiddelbart til at finde ud af, men resten har jeg aldrig hørt om. På sigt skal jeg have lavet en user klasse, så jeg kunne godt tœnke mig at høre din mening om hvordan sådan en skal håndteres efter en login dialog.Skal hele user objektet gøres public shared osv...?
Class CurrentUser Private _UserId As String = String.Empty Private _UserName As String = String.Empty
Private Shared _CurrentUser As CurrentUser
Private Sub New(ByVal NewUserId) Try _UserId = NewUserId If NewUserId = 1 Then _UserName = "Peter Schmidt" ElseIf NewUserId = 2 Then _UserName = "Alex Frederiksen" End If Catch ex As Exception Throw New Exception("Error initiating CurrentUser object", ex) End Try
End Sub
Public Shared Function Instance(ByVal NewUserId) As CurrentUser If _CurrentUser Is Nothing Then _CurrentUser = New CurrentUser(NewUserId) End If Return _CurrentUser End Function
Public ReadOnly Property UserName() As String Get Return _UserName End Get End Property
Har løst det...men ved ikke hvor "rigtigt" det er...
Imports system
Class CurrentUser Private _UserId As String = String.Empty Private _UserName As String = String.Empty
Private Shared _CurrentUser As CurrentUser
Private Sub New(ByVal NewUserId) Try _UserId = NewUserId If NewUserId = 1 Then _UserName = "Peter Schmidt" ElseIf NewUserId = 2 Then _UserName = "Alex Frederiksen" End If Catch ex As Exception Throw New Exception("Error initiating CurrentUser object", ex) End Try
End Sub
Public Shared Function CreateUserObjectByUserId(ByVal NewUserId) As CurrentUser If _CurrentUser Is Nothing Then _CurrentUser = New CurrentUser(NewUserId) End If Return _CurrentUser End Function
Public Shared Function GetUserObject() As CurrentUser If _CurrentUser Is Nothing Then _CurrentUser = New CurrentUser(0) End If Return _CurrentUser End Function
Public ReadOnly Property UserName() As String Get Return _UserName End Get End Property
End Class
Initierer med: "namespace".CurrentUser.CreateUserObjectByUserId(5) Og bruger objektet efterfølgende med (fx. UserName): "namespace".CurrentUser.GetUserObject.UserName
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.