Anytime you use “dim”, you are creating a local variable even if the variable name is the same as a property. So if you did
dim AppParameterDictionary as new Dictionary
you will create a local variable with that name that will go away as soon as the method ends. The property you defined of the same name will never be accessed. So don’t do that. 
On the other hand, when you create a local variable that is meant to hold an object, like a Dictionary, you must instantiate it with “new”, right? Otherwise you’d get a NilObjectException when you tried to use it. Properties are exactly the same way. By creating the property, you’ve created a space for the object, same as if you’d done this.
dim AppParameterDictionary as Dictionary
If you now try to access it, as you have, you will get a NilObjectException, so before that point, you must create a new one:
AppParameterDictionary = new Dictionary
(I know I’m repeating what Matthew said above, but hope this clarification helps.)
And here’s a tip: When you create a property of which there will only ever be one that must be instantiated, do it as a computed property and only fill in the “Get” section. That code would look something like this:
Computed Property AppParameterDictionary
Get
static d as Dictionary
if d is nil then
d = new Dictionary
end if
return d
That creates a property that instantiates itself. (You can research “singleton” for more information about this concept.)
HTH.