2011-11-16 24 views
6

Tôi có một ứng dụng riêng biệt (nhằm mục đích kiểm tra chính tả các tệp .resx của tôi). biến cố. Tuy nhiên, nếu tệp .resx chứa tệp văn bản (ví dụ: xml), ứng dụng của tôi sẽ tải tệp và thử đánh vần kiểm tra tệp đó. Đây không phải là điều tôi muốn làm. Có cách nào để nói từ ResXResourceReader nếu tài nguyên được tải thực sự là một tệp không?Khi sử dụng ResXResourceReader làm cách nào để biết tài nguyên có phải là tệp được nhúng hay là một chuỗi được nhúng

mẫu mã trông như thế này:

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

Trả lời

6

Yes. Đặt UseResXDataNodes trên ResXResourceReader sẽ làm cho giá trị từ điển trở thành một ResXDataNode thay vì giá trị thực tế mà bạn có thể sử dụng để xác định xem đó có phải là tệp hay không. Một cái gì đó như thế này:

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); 
    } 
} 
Các vấn đề liên quan