2013-06-01 71 views
2

我有一個應用程序,它讀取特定類型的XML文件。這些XML文件可以相互引用,例如:如何檢查WPF資源是否存在?

<MyXml> 
    <Reference Path="pack://application:,,,/MyOtherXML.xml"/> 
    <!--More data--> 
</MyXml> 

這主要是因爲他們是很長的,你不想重複自己與180+線XML的。

但是,我不知道如何檢查文件是否存在,如果他們是資源。我知道,如果他們是正常的文件,我可以使用File.Exists,但我認爲你不能爲資源做到這一點。我也發現this,但答案似乎是錯誤的。那麼如何檢查WPF上是否存在資源?

回答

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(); 
      } 
     } 
    } 
+0

這對我的作品! +1。 –

0

你可以叫Assembly.GetExecutingAssembly().GetManifestResourceNames()得到所有的資源名稱和檢查結果的資源你想

var names = Assembly.GetExecutingAssembly().GetManifestResourceNames(); 
if(names.Contains(resourceNameTosearch)) 
{ 
    // exist 
} 
+0

這只是讓我「MyProject.g.resources」和「MyProject.Properties.Resources.resources」,而不是其他資源(也有160+人) –