如何从silverlight程序集加载所有资源?

时间:2011-04-08 14:10:43

标签: xml file load

我有一个silverlight程序集,它有几个xml文件。所有这些文件都作为资源嵌入。我也不知道文件名。我需要加载所有文件并在内存字典中构造数据。 如果我知道文件名,我知道如何加载xml文件。如下图所示

this.filePath = string.Format(@"/{0};component/internal/{1}", assemblyName, "TaxRules.xml");
StreamResourceInfo streamResourceInfo = Application.GetResourceStream(new Uri(filePath, UriKind.Relative));
        Stream stream = streamResourceInfo.Stream;
        //check for performance
        XmlReader reader = XmlReader.Create(stream);

我不知道如何在不知道文件名的情况下加载所有xml文件。 任何有关这方面的帮助都是高度适用的

1 个答案:

答案 0 :(得分:0)

如果XML文件上的构建操作是嵌入式资源,并且您在程序集中,则可以从程序集中获取它

e.g。

Assembly asm = Assembly.GetExecutingAssembly();

var names = (from n in asm.GetManifestResourceNames()
                         where n.EndsWith(".xml")
                         select n
                         ).ToList();

然后当您需要使用GetManifestResourceStream

的流时

e.g。

   Dictionary<string, System.IO.Stream> resources = new Dictionary<string,System.IO.Stream>();
   foreach (string name in names)
   {
          resources.Add(name, asm.GetManifestResourceStream(name));

   }

注意:使用VS 2010 SilverLight Toolkit 4进行测试