Silverlight中使用配置文件的方法

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"];


你可能感兴趣的:(Stream,String,action,silverlight,reference,WinForm)