如何检查WPF资源是否存在?

It'*_*ie. 2 c# wpf resources

我有一个应用程序,它读取特定类型的XML文件.这些XML文件可以互相引用,例如:

<MyXml>
    <Reference Path="pack://application:,,,/MyOtherXML.xml"/>
    <!--More data-->
</MyXml>
Run Code Online (Sandbox Code Playgroud)

这主要是因为它们很长,并且您不想重复使用180多行XML.

但是,我不确定如果它们是资源,如何检查文件是否存在.我知道如果它们是我可以使用的普通文件File.Exists,但我认为你不能为资源做到这一点.我也发现了这一点,但答案似乎是错误的.那么如何检查WPF上是否存在资源?

Roh*_*ats 8

您需要使用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();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)