Silverlight作为一个精简版的.NET framework,没有为配置文件提供相应的支持。我们无法像在winForm中那样使用System.Configuration.ConfigurationManager 来访问app.config中的配置信息。所以比较好的一个方式就只自己写一个配置文件管理类ConfigurationManager。以下构造方法参考了Andrew Tokeley上面的相关文章。
首先,在工程中创建一个XML文件,可以取名为app.config。
记得放在工程的根目录,方便后面设置路径。把Build Action设成Resource,关于Build Action的说明可以在这里找到。
随便在app.config中写点东西
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="name" value="srzhz"/> <add key="university" value="Tsinghua University"/> </appSettings> </configuration>
然后要开始创建这个ConfigurationManager类了。
首先在工程上按右键点击Add Reference,之后选择System.Xml.Linq。(如果没加的话无法引入命名空间System.Xml.Linq)
然后在ConfigurationManager类中写入如下代码
using System; using System.Windows; using System.Collections.Generic; using System.Windows.Resources; using System.IO; using System.Xml.Linq; using System.Reflection; namespace Model { /// <summary> /// Access appSettings from a configuration file /// </summary> /// <remarks>Your appConfig file must be in the root of your applcation</remarks> public static class ConfigurationManager { static ConfigurationManager() { AppSettings = new Dictionary<string,string>(); ReadSettings(); } public static Dictionary<string,string> AppSettings { get; set; } private static void ReadSettings() { // Get the name of the executing assemby - we are going to be looking in the root folder for // a file called app.config string assemblyName = Assembly.GetExecutingAssembly().FullName; assemblyName = assemblyName.Substring(0,assemblyName.IndexOf(',')); string url = String.Format("{0};component/app.config",assemblyName); StreamResourceInfo configFile = Application.GetResourceStream(new Uri(url,UriKind.Relative)); if (configFile != null && configFile.Stream != null) { Stream stream = configFile.Stream; XDocument document = XDocument.Load(stream); foreach (XElement element in document.Descendants("appSettings").DescendantNodes()) { AppSettings.Add(element.Attribute("key").Value,element.Attribute("value").Value); } } } } }
之后你就可以通过调用这个类来获得配置信息了。例如:
String name = ConfigurationManager.AppSettings["name"];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。