Я создаю класс для обработки записей в реестре для моего приложения, но у меня возникают некоторые проблемы на раннем этапе.Как разрешить ошибки при использовании словаря
В нижеследующем, он должен взять все ключи/значения для SubKey и добавить их в Dictonary
. Окно сообщения, которое закомментировано, правильно отображает ключи и значения, но каждый раз, когда функция запускается, строка ниже генерирует ошибку A first chance exception of type 'System.NullReferenceException'
.
Поскольку ключи реестра сами по себе кажутся прекрасными, я думаю, что это связано с тем, как я использую RegKeys Dictonary
. Если бы кто-то мог взглянуть и посоветовать, я был бы благодарен. Благодарю.
Это, как я начала класс (я даже не пытался сделать что-нибудь еще только пока) -
Private Sub getMyRegSettings()
Dim ServerPing As RegistryKey = Registry.CurrentUser.OpenSubKey("ServerPing")
Dim Servers As RegistryKey = ServerPing.OpenSubKey("Servers")
Dim MyRegistry As New MyRegistry(Servers)
Dim RegKeys As Dictionary(Of String, String) = MyRegistry.RegKeys
End Sub
А вот это класс, который вызывает у меня некоторые проблемы -
Public Class MyRegistry
Public RegKeys As Dictionary(Of String, String)
Public Sub New(SubKey As RegistryKey)
get_registry_keys(SubKey)
End Sub
Private Sub get_registry_keys(SubKey As RegistryKey)
' Print the information from the Test9999 subkey.
For Each valueName As String In SubKey.GetValueNames() ' Error occurs here
'MsgBox("Key: " & valueName & vbCrLf & "Value: " & SubKey.GetValue(valueName))
RegKeys(valueName) = SubKey.GetValue(valueName).ToString()
Next valueName
End Sub
End Class
Где вы создаете новый экземпляр RegKeys внутри MyRegistry? В конструкторе у вас нет и в get_registry_keys вы используете его, когда он все еще Null. –
Не объявляет ли это, что это свойство класса создает его? Я сделал это прямо в 'Public Class MyRegistry'. Благодарю. –