Sub ReadRessourceFile()
''#Requires Assembly System.Windows.Forms
Dim rsxr As System.Resources.ResXResourceReader = New System.Resources.ResXResourceReader("items.resx")
''# Iteriere durch die Ressourcen und zeige den Inhalt in der Konsole an.
Dim d As System.Collections.DictionaryEntry
For Each d In rsxr
Console.WriteLine(d.Key.ToString() + ":" + ControlChars.Tab + d.Value.ToString())
Next d
''#Schließe den Reader.
rsxr.Close()
End Sub
Dann musst du dies zu einem Serializable Dictionary hinzufügen, das du dann mit System.Web.Extensions.dll in JSON serialisieren kannst.
Public Class JSONHelper
Public Shared Function Serialize(Of T)(ByVal obj As T) As String
Dim JSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
Return JSONserializer.Serialize(obj)
End Function
Public Shared Function Deserialize(Of T)(ByVal json As String) As T
Dim obj As T = Activator.CreateInstance(Of T)()
Dim JSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
obj = JSONserializer.Deserialize(Of T)(json)
Return obj
End Function
End Class
Bearbeiten: C# :
public void ReadRessourceFile()
{
//Requires Assembly System.Windows.Forms '
System.Resources.ResXResourceReader rsxr = new System.Resources.ResXResourceReader("items.resx");
// Iteriere durch die Ressourcen und zeige den Inhalt in der Konsole an. '
System.Collections.DictionaryEntry d = default(System.Collections.DictionaryEntry);
foreach (DictionaryEntry d_loopVariable in rsxr) {
d = d_loopVariable;
Console.WriteLine(d.Key.ToString() + ":" + ControlChars.Tab + d.Value.ToString());
}
//Schließe den Reader. '
rsxr.Close();
}
Und der JSON-Helper:
public class JSONHelper
{
public static string Serialize(T obj)
{
System.Web.Script.Serialization.JavaScriptSerializer JSONserializer = new System.Web.Script.Serialization.JavaScriptSerializer();
return JSONserializer.Serialize(obj);
}
public static T Deserialize(string json)
{
T obj = Activator.CreateInstance();
System.Web.Script.Serialization.JavaScriptSerializer JSONserializer = new System.Web.Script.Serialization.JavaScriptSerializer();
obj = JSONserializer.Deserialize(json);
return obj;
}
}
Außerdem, wenn du den Kommentar ebenfalls erhalten möchtest, kannst du UseResXDataNodes auf true setzen.
Beispiel:
public static string ReadRessourceFile()
{
string[] languages = new string[] { "de", "fr", "it", "en" };
string pathPattern = System.AppDomain.CurrentDomain.BaseDirectory;
pathPattern = System.IO.Path.Combine(pathPattern, "..", "..", "..", "libQrCodeGenerator", "Resources", "QRBillText-{0}.resx");
pathPattern = System.IO.Path.GetFullPath(pathPattern);
System.Collections.Generic.Dictionary> dict = new System.Collections.Generic.Dictionary>(System.StringComparer.InvariantCultureIgnoreCase);
foreach (string lang in languages)
{
dict[lang] = new System.Collections.Generic.Dictionary(System.StringComparer.InvariantCultureIgnoreCase);
string file = string.Format(pathPattern, lang);
System.Resources.ResXResourceReader rr = new System.Resources.ResXResourceReader(file);
rr.UseResXDataNodes = true;
// '# Iteriere durch die Ressourcen und zeige den Inhalt in der Konsole an.
foreach (System.Collections.DictionaryEntry d in rr)
{
System.Resources.ResXDataNode node = (System.Resources.ResXDataNode)d.Value;
string value = (string) node.GetValue((System.ComponentModel.Design.ITypeResolutionService)null);
string comment = node.Comment;
if(!string.IsNullOrEmpty(comment))
{
System.Console.WriteLine(comment);
}
// dict[lang][d.Key.ToString()] = d.Value.ToString(); // wenn UseResXDataNodes = true nicht verwendet wird
dict[lang][d.Key.ToString()] = value;
}
// '#Schließe den Reader.
rr.Close();
}
string json = Newtonsoft.Json.JsonConvert.SerializeObject(dict, Newtonsoft.Json.Formatting.Indented);
return json;
}
0 Stimmen
Ein Grund, wenn Sie eine App erstellen, die auf JSON-Daten und AJAX-Aufrufen basiert, müssen Sie möglicherweise lokalisierte HTML-Schnipsel in Javascript generieren, ohne die Hilfe Ihrer C#-Ansichtsdateien. In diesem Fall ist das JSON-Objekt mit den resx-Daten unschätzbar.