Home > Software engineering >  Public dictionary not visible to class
Public dictionary not visible to class

Time:09-13

I have declared two Public dictionaries in a Module as follows :

Module Globals
    Public buttonImagesEnabled As Dictionary(Of Integer, Image)
    Public buttonImagesDisabled As Dictionary(Of Integer, Image)
End Module

Which are then initialised in the constructor for a Form :

Public Class myForm
    Public Sub New()
        ' This call is required by the designer.
        InitializeComponent()
        ' Add any initialization after the InitializeComponent() call.
        buttonImagesEnabled = New Dictionary(Of Integer, Image)
        buttonImagesDisabled = New Dictionary(Of Integer, Image)
    End Sub
End Class

The solution builds fine but when I try to run it, I get an exception (at the line in the form constructor specifying a New Dictionary) :

System.TypeInitializationException: 'The type initializer for 'MySolution.Globals' threw an exception.'

InnerException #1

{"Configuration system failed to initialize"}

InnerException #2

{"Unrecognized configuration section system.diagnostics. (...ProjectPath.MySolution.dll.config line 8)"}

Checked the .dll.config file and it's just a <system.diagnostics> XML tag (the rest of the XML looks fine to me)

If I move the Public declaration into the Form (and out of the Module) it runs fine but I can't access the dictionaries from any of my classes (i.e. referencing them in the classes produces errors á la :

'buttonImagesEnabled' is not declared. It may be inaccessible due to its protection level.

Am I missing something blindingly obvious here?

CodePudding user response:

Okay, looks like it was nothing to do with the dictionaries, nor their declarations - the app.config file was somehow botched.

The solution here : .NET Core - Using system.diagnostics in App.config solved the problem (manual insertion of the <system.diagnostics> configSection into the XML)

Why on earth Visual Studio / .NET Core inserts the section, but not the declaration, automatically, is absurd to me!

  • Related