如何检查WPF资源是否存在
本文关键字:WPF 资源 是否 存在 检查 何检查 | 更新日期: 2023-09-27 18:16:35
我有一个应用程序,它读取特定类型的XML文件。这些XML文件可以相互引用,例如:
<MyXml>
<Reference Path="pack://application:,,,/MyOtherXML.xml"/>
<!--More data-->
</MyXml>
这主要是因为它们很长,您不希望用180多行XML重复自己。
然而,我不知道如何检查文件是否存在,如果他们是资源。我知道,如果它们是普通文件,我可以只使用File.Exists
,但我不认为你可以这样做的资源。我也发现了这个,但答案似乎是错误的。那么如何检查一个资源是否存在于WPF上呢?
您需要使用GetManifestResourceStream
从字典中获取资源并读取键集合,如下所示-
public static string[] GetResourceNames()
{
var assembly = Assembly.GetExecutingAssembly();
string resName = assembly.GetName().Name + ".g.resources";
using (var stream = assembly.GetManifestResourceStream(resName))
{
using (var reader = new System.Resources.ResourceReader(stream))
{
return reader.Cast<DictionaryEntry>().Select(entry =>
(string)entry.Key).ToArray();
}
}
}
您可以调用Assembly.GetExecutingAssembly().GetManifestResourceNames()
获取所有资源名称并检查您想要的资源的结果
var names = Assembly.GetExecutingAssembly().GetManifestResourceNames();
if(names.Contains(resourceNameTosearch))
{
// exist
}