2011-11-16 13 views
6

ho un'applicazione separata (cioè a scopo di controllo ortografico miei file resx), che viene eseguito come un pre-compilazione evento. Tuttavia, se il file RESX contiene un file di testo (XML per esempio) la mia applicazione caricherà il file e tentare di controllo ortografico esso. Questo non è proprio quello che voglio fare. C'è un modo per dire dalla ResXResourceReader se la risorsa caricata è in realtà un file?Quando si utilizza il ResXResourceReader come si può dire se la risorsa è un file incorporato o se si tratta di una stringa incorporato

Esempio di codice simile a questo:

   ResXResourceReader reader = new ResXResourceReader(filename); 
       ResourceSet resourceset = new ResourceSet(reader); 

       Dictionary<DictionaryEntry, object> newvalues = new Dictionary<DictionaryEntry, object>(); 

       foreach (DictionaryEntry entry in resourceset) 
       { 
        //Figure out in this 'if' if it is an embedded file and should be ignored. 
        if (entry.Key.ToString().StartsWith(">>") || !(entry.Value is string) || string.Compare((string)entry.Value, "---") == 0) 
         continue; 
       } 

risposta

6

Sì. Impostazione UseResXDataNodes su ResXResourceReader causerà i valori del dizionario di essere un ResXDataNode invece del valore reale, che è possibile utilizzare per determinare se si tratta di un file o meno. Qualcosa di simile a questo:

var rsxr = new ResXResourceReader("Test.resx"); 
rsxr.UseResXDataNodes = true; 
foreach (DictionaryEntry de in rsxr) 
{ 
    var node = (ResXDataNode)de.Value; 
    //FileRef is null if it is not a file reference. 
    if (node.FileRef == null) 
    { 
     //Spell check your value. 
     var value = node.GetValue((ITypeResolutionService) null); 
    } 
} 
Problemi correlati