以下的地圖文件,然後打開它作爲一個System.Configuration變量:
string FilePath = System.Reflection.Assembly.GetAssembly(typeof(EncryptDecryptViewModel)).Location
FilePath += @".config";
var ConfigFileMap = new ExeConfigurationFileMap();
ConfigFileMap.ExeConfigFilename = FilePath;
Configuration LocalConfigurationManager = ConfigurationManager.OpenMappedExeConfiguration(ConfigFileMap, ConfigurationUserLevel.None);
您現在可以檢索來自組件值配置文件與您通過配置管理器非常相似,但是您的請求必須更加明確。
當使用System.Configuration.ConfigurationManager,以下將是有效的,並返回一個值:
string s = System.Configuration.ConfigurationManager.AppSettings["SomeSetting"];
然而,使用(從上面的代碼)之類的正常ConfigurationManager中呼叫這樣的電話配置可變LocalConfigurationManager時如:
string s = LocalConfigurationManager.AppSettings["ConfigurationSections"];
當您試圖運行代碼,您會收到以下錯誤:
由於其保護級別
這「System.Configuration.ConfigurationElement.this [System.Configuration.ConfigurationProperty]」是 無法訪問是因爲在ConfigurationManager AppSettings屬性是一個NameValueCollection中。在配置變量,實際上AppSettings的是它包含的屬性所調用的設置即是如此KeyValueConfigurationCollection訪問屬性的呼叫是這樣的一個System.Configuration.AppSettingsSection:
string s = LocalConfigurationManager.AppSettings.Settings["SomeSetting"].Value;
對於連接字符串Secion中,下面的語法將被使用
string ConnectionString = LocalConfigurationManager.ConnectionStrings.ConnectionStrings["connectionStringName"].ConnectionString;
好的,這是有道理的。有什麼(好)的方式,我可以使用我正在加載的程序集的配置?不知何故,也許將它合併到我的應用程序的配置..? – 2010-07-28 09:46:27
是的,您可以使用OpenMappedExeConfiguration方法來指定想要打開的配置文件的位置並從中讀取值。 – 2010-07-28 09:56:13