博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight中使用配置文件的方法
阅读量:4645 次
发布时间:2019-06-09

本文共 2723 字,大约阅读时间需要 9 分钟。

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

另外,使用WebClient也可以实现配置文件的访问。实现方法如下:

  1. 在ClientBin下创建配置文件,Build Action设置成"内容"
  2. 调用如下方法,即可取得配置的内容

public static void ReadFrequencyConfigFile(Action<XDocument> p_result)

{

WebClient webClient = new WebClient();

string uri = Application.Current.Host.Source.AbsoluteUri; //服务器路径

int index = uri.IndexOf("/ClientBin", System.StringComparison.Ordinal);

uri = uri.Substring(0, index + 10) + "/FrequencyConfig.xml";

webClient.OpenReadAsync(new Uri(uri, UriKind.Absolute));

webClient.OpenReadCompleted += (s1, e1) =>

{

if (e1.Error != null)

{

throw new Exception("频率配置文件读取错误!");

}

var doc = XDocument.Load(e1.Result);

if (p_result != null)

{

p_result(doc);

}

};

}

转载于:https://www.cnblogs.com/lyf681888/p/4058696.html

你可能感兴趣的文章
layer---口碑极佳的web弹层组件
查看>>
自己的一些简要学习点
查看>>
HTPJ 1268 GCD
查看>>
细说程序员最后归宿
查看>>
hdu2063 匈牙利算法 二分最大匹配模版题
查看>>
js中的string.format
查看>>
python设计模式之观察者模式
查看>>
poj1833 排列
查看>>
用开源中国(oschina)Git管理代码(整合IntelliJ 13.1.5)
查看>>
My Router
查看>>
工作中的一些经验小结
查看>>
thinkPHP使用模型更新数据
查看>>
mysql函数(一.字符函数)
查看>>
rancher2 HA部署注意事项
查看>>
AngularJS
查看>>
汇编语言实验四
查看>>
一道常被人轻视的前端JS面试题
查看>>
LeetCode Intersection of Two Arrays
查看>>
第14章 Wi-Fi系统应用 14.1 了解Wi-Fi系统的结构
查看>>
day70-oracle PLSQL_02光标
查看>>