2011-11-16 1 views
6

J'ai une application séparée (c'est-à-dire pour vérifier l'orthographe de mes fichiers .resx) qui s'exécute en pré-construction un événement. Cependant, si le fichier .resx contient un fichier texte (xml par exemple), mon application chargera le fichier et tentera de le vérifier. Ce n'est pas vraiment ce que je veux qu'il fasse. Existe-t-il un moyen de dire à ResXResourceReader si la ressource chargée est réellement un fichier?Lors de l'utilisation de ResXResourceReader, comment savoir si la ressource est un fichier incorporé ou s'il s'agit d'une chaîne incorporée

Exemple de code

ressemble à ceci:

   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; 
       } 

Répondre

6

Oui. Si vous définissez UseResXDataNodes sur ResXResourceReader, les valeurs du dictionnaire seront ResXDataNode au lieu de la valeur réelle, que vous pouvez utiliser pour déterminer s'il s'agit d'un fichier ou non. Quelque chose comme ceci:

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); 
    } 
} 
Questions connexes