Silverlight中使用配置文件的方法
Silverlight作为一个精简版的.NET framework,没有为配置文件提供相应的支持。我们无法像在winForm中那样使用System.Configuration.ConfigurationManager?来访问app.config中的配置信息。所以比较好的一个方式就是自己写一个配置文件管理类ConfigurationManager。
首先,在工程中创建一个XML文件,取名为app.config,记得放在工程的根目录,方便后面设置路径。把Build Action设成Resource,随便在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 SilverlightApplication92
{
/// <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"];
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。