Я пытаюсь создать языковой словарь в VB NET, чтобы иметь возможность иметь несколько языков в приложении.
В этом словаре есть метод init, который загружает из базы данных весь словарь и сохраняет его в памяти.
В остальных классах проекта я добавил ссылку, и я могу напрямую использовать объект, не создавая новый экземпляр, поскольку их методы являются общими.
Мой вопрос заключается в том, как мне загрузить контент словаря, чтобы остальные классы, имеющие доступ только к методу Language.GetWord, получили правильную запись коллекции, так же как и класс My.Settings.
Когда My.Settings используется из любого класса, значения загружаются. Я ищу тот же эффект.
Это код класса:
Public Class LanguageProvider
Private Shared CurrentLanguage As Collection
Public Shared ReadOnly Property GetWord(ByVal Label As String)
Get
Try
Return CurrentLanguage.Item(Label)
Catch ex As Exception
Return Label
End Try
End Get
End Property
Public Shared Sub LoadLanguage(ByVal CultureId As Integer)
Dim SQLController As New SqlDataAccessController
SQLController.SQLSentence = "SELECT DNF_CULTURE_LANGUAGE_LABELS.LABEL, DNF_CULTURE_LANGUAGE_LABELS.VALUE FROM DNF_CULTURE_LANGUAGE_LABELS WHERE DNF_CULTURE_LANGUAGE_LABELS.CULTUREID = " & CultureId & " ORDER BY LABEL;"
SQLController.OpenConnection()
Dim dr As SqlClient.SqlDataReader
dr = SQLController.GetData()
CurrentLanguage = New Collection
While dr.Read()
CurrentLanguage.Add(dr.Item("Value"), dr.Item("Label"))
End While
dr.Close()
SQLController.CloseConnection()
End Sub
End Class
Функция LoadLanguage должна вызываться при загрузке приложения, чтобы один раз получить доступ к базе данных.
После этого свойства GetWord должен получить доступ к коллекции со словами и вернуть результат. Проблема в том, что экземпляры не совпадают, и словарь не загружается, когда его использует класс.
Спасибо.