Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Making an object available in a NameObjectCollectionBase
Message
From
27/01/2011 17:45:19
 
 
To
All
General information
Forum:
ASP.NET
Category:
Class design
Title:
Making an object available in a NameObjectCollectionBase
Environment versions
Environment:
VB 9.0
OS:
Windows 7
Network:
Windows 2003 Server
Database:
MS SQL Server
Application:
Web
Miscellaneous
Thread ID:
01497597
Message ID:
01497597
Views:
86
I would like to know if it is possible to make an object available in a NameObjectCollectionBase.

For example, for my label design, I can do things like this for those commonly used labels that I prefer to initialize when the application starts:
oApp.Labels("Company").Title_E
oApp.Labels("Company").Title_F
...which would return the company label in English and in French.

And, I would like to be able to do this:
oApp.Labels("Company").Title
...which would then return the company label in the language of the application object, which is oApp.nLanguage.

My Labels NameObjectCollectionBase is defined like this:
    ' Label class
    Public Class Label
        Private cName As String = ""
        Private cTitle As String = ""
        Private cTitle_E As String = ""
        Private cTitle_F As String = ""
        Private cTitle_S As String = ""
        Private cTitle_P As String = ""

        ' expC1 Name
        ' expC2 Title in English
        ' expC3 Title in French
        ' expC4 Title in Spanish
        ' expC5 Title in Portuguese
        Public Sub New(ByVal tcName As String, ByVal tcTitle_E As String, _
         ByVal tcTitle_F As String, ByVal tcTitle_S As String, _
         ByVal tcTitle_P As String)

            cName = tcName
            cTitle_E = tcTitle_E
            cTitle_F = tcTitle_F
            cTitle_S = tcTitle_S
            cTitle_P = tcTitle_P

        End Sub

        Public ReadOnly Property Name As String
            Get
                Return cName
            End Get
        End Property

        Public ReadOnly Property Title As String
            Get
                Dim lcTitle As String = ""
                Dim lnLanguage As Integer = 0

                ' In the following line, I need to find a way to have oApp available here so I can get
                ' the nLanguage property value and return the title of the label based on it.

                ' lnLanguage = oApp.nLanguage

                ' Based on the language
                Select Case lnLanguage

                    ' English
                    Case 1
                        lcTitle = Title_E

                        ' French
                    Case 2
                        lcTitle = Title_F

                        ' Spanish
                    Case 3
                        lcTitle = Title_S

                        ' Portuguese
                    Case 4
                        lcTitle = Title_P

                End Select

                Return lcTitle
            End Get
        End Property

        Public ReadOnly Property Title_E As String
            Get
                Return cTitle_E
            End Get
        End Property

        Public ReadOnly Property Title_F As String
            Get
                Return cTitle_F
            End Get
        End Property

        Public ReadOnly Property Title_S As String
            Get
                Return cTitle_S
            End Get
        End Property

        Public ReadOnly Property Title_P As String
            Get
                Return cTitle_P
            End Get
        End Property

    End Class

    Public Class Labels
        Inherits System.Collections.Specialized.NameObjectCollectionBase

        Public Overloads Sub Add(ByVal Label As Label)
            BaseAdd(Label.Name, Label)
        End Sub

        Default Public Overloads ReadOnly Property Item(ByVal Title As String) As Label
            Get
                Return CType(BaseGet(Title), Label)
            End Get
        End Property

    End Class
The problem is that I do not want to pass oApp as a parameter to this property. The goal of this is to be able to have this collection to recognize what is the current oApp.nLanguage value by itself so to return the proper string as per the language.

Is this possible?
Michel Fournier
Level Extreme Inc.
Designer, architect, owner of the Level Extreme Platform
Subscribe to the site at https://www.levelextreme.com/Home/DataEntry?Activator=55&NoStore=303
Subscription benefits https://www.levelextreme.com/Home/ViewPage?Activator=7&ID=52
Next
Reply
Map
View

Click here to load this message in the networking platform