tags:

views:

290

answers:

2

I have a dll that is referenced by the parent (executing) assembly. In the ApplicationSettings section of the app.config for the parent assembly I have some settings that can be accessed in the normal intellisense manner (e.g. Properties.Settings.Default.SMTPServer).

How do I access these settings from the referenced dll? I obviously can't use intellisense as they are not in the same assembly!

A: 

Are you accessing that value from both assemblies?

The dll can have it's own config file and app settings. This starts out as a dll with a config file named after it, but the settings can be moved to the main application as well.

Another approach that I have used is assign the value to an IoC and then read the value out of the Ioc (Ioc == Inversion of Control library). You can do the same thing by assigning the value to a singleton class.

Chris Brandsma
I am not accessing the value from both assemblies. The reason that I want the executing assembly to hold the setting is because the referenced dll is used/compiled by many different applications but the settings will be different for each application - hence the settings cannot be defined in the referenced dll.
Calanus
A: 

Have you tried saving a .settings file in your DLL project and then using its [] operator to access the property by name?

For example, let's say your DLL have a MySettings.settings file which has nothing in particular in it:

MySettings.Default["SomeSetting"];

(Note, I haven't actually tried this, but after a quick think it seems like it ought to work)

I think a better solution would be to take Chris' advice and use a singleton or IOC mechanism, that way you wouldn't have to sacrifice type safety.

jlew