Вы спрашиваете, как получить доступ к файлу конфигурации из DLL, которая отделена от файла конфигурации исполняемой программы?Возможно, это не очень хорошая идея, но вы можете создать свою собственную версию ConfigurationManager.Сначала создайте класс для извлечения настроек из вашего файла конфигурации (который использует XmlDocument для анализа файла конфигурации):
public sealed class Settings
{
private readonly string settingsPath;
private XmlDocument doc;
private XmlDocument Doc
{
get
{
if (doc == null)
{
doc = new XmlDocument();
doc.Load(settingsPath);
}
return doc;
}
}
public string this[string name]
{
get
{
return GetSetting(name);
}
}
internal Settings()
{
settingsPath = @"\\path\to\app.config";
}
internal Settings(string settingsPath)
{
this.settingsPath = settingsPath;
}
public string GetSetting(string settingName)
{
return Doc.SelectSingleNode(string.Format("/configuration/settings/setting[@key='{0}']", settingName)).Attributes["value"].Value;
}
}
Затем создайте вспомогательный класс:
public class SettingsManager
{
private static Settings settings;
public static Settings Settings
{
get
{
if (settings == null)
{
settings = new Settings();
}
return settings;
}
}
}
Итак, теперьвы можете использовать класс SettingsManager из библиотеки классов, как если бы вы использовали ConfigurationManager из консольного приложения:
SettingsManager.Settings["mysetting"]
Вот как должен выглядеть ваш файл конфигурации
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<settings>
<setting key="mysetting" value="my value"></setting>
</settings>
</configuration>