英语不是我的母语,我是新手,所以不要嘲笑我。
我想在C#中创建一个类,帮助我将数据保存到文件并轻松读取。它的工作原理如下:
RealObject john = new RealObject("John");
john.AddCharacter("Full Name", "Something John");
john.AddCharacter("Grade", new List<double> { 9.9, 8.8, 7.7 });
await john.SaveToFileAsync("Test.ini");
RealObject student = new RealObject("John");
await student.ReadFromFileAsync("Test.ini");
Type valueType = student.GetCharacter("Grade").Type;
List<double> johnGrade = (List<double>) student.GetCharacter("Grade").Value;
文件“Test.ini”如下所示:
S_Obj_John
Name System.String Something John
Grade System.Collections.Generic.List`1[System.Double] 9.9;8.8;7.7
E_Obj_John
我有一些问题:
问题1。你能给我一些为我做这份工作的图书馆吗?
问题2。我的代码太冗余了,我该如何优化呢?
2.1保存代码:我必须编写类似的函数:ByteListToString,IntListToString,DoubleListToString,...
private static string ListToString(Type listType, object listValue)
{
string typeString = GetBaseTypeOfList(listType);
if (typeString == null)
{
return null;
}
switch (typeString)
{
case "Byte":
return ByteListToString(listValue);
..........
default:
return null;
}
}
private static string ByteListToString(object listValue)
{
List<byte> values = (List<byte>) listValue;
string text = "";
for (int i = 0; i < values.Count; i++)
{
if (i > 0)
{
text += ARRAY_SEPARATING_SYMBOL;
}
text += values[i].ToString();
}
return text;
}
2.2阅读代码:我必须编写类似的函数:StringToByteList,StringToIntList,StringToDoubleList,...
public static object StringToList(Type listType, string listValueString)
{
string typeString = GetBaseTypeOfList(listType);
if (typeString == null)
{
return null;
}
switch (typeString)
{
case "Byte":
return StringToByteList(listValueString);
..........
default:
return null;
}
}
private static List<byte> StringToByteList(string listValueString)
{
var valuesString = listValueString.Split(ARRAY_SEPARATING_SYMBOL);
List<byte> values = new List<byte>(valuesString.Length);
foreach (var v in valuesString)
{
byte tmp;
if (byte.TryParse(v, out tmp))
{
values.Add(tmp);
}
}
return values;
}
感谢您的帮助
答案 0 :(得分:1)
有两种常用的方法来“序列化”数据,这是获取对象并将其转换为字符串的一种奇特方式。然后在另一侧,您可以“反序列化”该字符串并将其转回对象。许多人都喜欢JSON,因为它非常简单,XML仍在使用,对于复杂的结构非常有用,但对于简单的类,JSON非常好。
我会查看https://www.json.org/并进行探索,存在将为您序列化和反序列化的库,这很好。不建议尝试使用字符串操作,因为大多数人(包括我)都会搞砸它。
但这个想法是以对象开始和结束,所以拿一个对象并将其序列化以将其保存到文件中。然后读取该对象(实际上只是文件中的字符串或文本行)并将其反序列化为对象。