2011-06-30 19 views
13

Potrzebuję napisać program, który odczytuje wszystkie zasoby ciągów z biblioteki dll i wstawi je do jakiejś tabeli. Mam metodę, która czyta zasoby:Pobierz wszystkie ciągi z resourcemanager

private static IEnumerable<KeyValuePair<string,string>> getAllResources(ResourceManager resourceManager, 
     Language language) 
    { 

     ResourceSet resourceSet = resourceManager.GetResourceSet(getCulture(language), true, true); 

     IDictionaryEnumerator dictNumerator = resourceSet.GetEnumerator(); 

     // Get all string resources 
     while (dictNumerator.MoveNext()) 
     { 
      // Only string resources 
      if (dictNumerator.Value is string) 
      { 
       var key = (string)dictNumerator.Key; 
       var value = (string)dictNumerator.Value; 
       yield return new KeyValuePair<string, string>(key, value); 
      } 
     } 
    } 

Ale kiedy zacząłem go używać, zauważyłem, że również odczytuje zasobów, które dodaje się jak plik (odczytuje zawartość pliku)

Jak mogę ignorować zasoby dodawane jako "plik" i łańcuchy tylko do odczytu?

+0

Czy nie byłoby możliwe użycie "as" rzutowania na wartość? –

+0

Mogę użyć "jak" zamiast "jest", ale to nie rozwiązuje mojego problemu – Oleksey

Odpowiedz

2

Nie ma sposobu, aby to zrobić. Zapoznaj się z sekcją zasobów twojego zespołu za pomocą Reflektora, na przykład. Twój plik tekstowy jest zapisany jako String. Nie ma różnicy między wartością ciągu a wartością pliku tekstowego.

Pliki binarne nie będą jednak stanowić problemu, ponieważ dla typów plików binarnych masz bajt [] jako wartość, a nie ciąg.

+0

tak, pliki binarne nie stanowią problemu. Problem tylko z plikami tekstowymi. Ale kiedy oglądam zasoby w Visual Studio 2010, są one sortowane według typu: "Ciągi" \ "Pliki" \ "Obrazy" \ "Ikony". Jak oni to robią? – Oleksey

+0

Są to reprezentacja zasobów programu Visual Studio. Wykorzystuje pliki, zdjęcia i lokalizacje ikon, aby załadować je jako zasoby do zespołu. Następnie mamy tylko zestaw z danymi bitmapowymi, ciągowymi lub bajtowymi []. – DiVan

Powiązane problemy