您的位置:首页 > 移动开发

silverlight 实现 读取app.config 或 web.config(转)

2011-12-15 14:17 471 查看
http://blog.csdn.net/gzy11/article/details/6733417

无意中写一个silverlight程序,准备做成浏览器外运行模式。就想如果是浏览器外运行模式,它就是个实实在在的C/S程序了应该和以前的WinForm应用程序一样,能读取本

地系统文件。然后就开始google之旅,发现一篇误人子弟之文章 《SilverLight C#程序之:读取并修改App.config文件》,纯粹瞎扯淡。用silverlight引用什

System.Configuration云云,写过silverlight程序的人都知道 silverlight只支持 silverlight类库的引用。而这个类库根本不是为silverlight而写的,所以这个方法行不通。

此方法有很大局限性,使用慎用。其原理从应用程序包里读取资源文件。

原文章地址http://andrewtokeley.net/archive/2011/01/23/silverlight-4-ndash-simple-configuration-manager.aspx (源码见此网页)

主要有几点要点,

APP.config 文件通过添加XML文件改XML后缀名实现。

其内部代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="test" value="123456llll"/>
</appSettings>
</configuration>

APP.CONFIG 必须把生成文件选项 设置为 Resource 模式。否则会读取不到资源文件。



ConfigurationManager静态类模拟了咋们通常使用的System.configuration,需要引用using System.Xml.Linq;



ConfigurationManager类如下:

/// <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);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐