Hi,
I have a logging class that I use in all my classes. The code for the logger was originally used like so:
Properties.Settings s = new Properties.Settings();
String path = s.logPath;
the app.config file looks likes this: (also every project that uses the Logger must have this AppSettingsSection in the App.config)
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="G2G.Logging.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<G2G.Logging.Properties.Settings>
<setting name="logPath" serializeAs="String">
<value />
</setting>
<setting name="logFilePrefix" serializeAs="String">
<value />
</setting>
<setting name="logInUTC" serializeAs="String">
<value>True</value>
</setting>
<setting name="loggingEnabled" serializeAs="String">
<value>True</value>
</setting>
</G2G.Logging.Properties.Settings>
</applicationSettings>
</configuration>
however this caused a problem in the following situation. A class that usses the Logger class is also being used by a COM object. For some reason, the COM object uses some funky .Config file. To remedy this I changed the way I retrieve the app settings as follows:
Configuration cs = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ClientSettingsSection settingsSection = ((ClientSettingsSection)(cs.SectionGroups["applicationSettings"].Sections["G2G.Logging.Properties.Settings"]));
SettingElementCollection settings = settingsSection.Settings;
String path = settings.Get("logPath").Value.ValueXml.InnerText;
This works beautifully but it is very ugly in my opinion. Does anyone have any suggestions of a more pretty way to do this?