我目前有一个自定义类型列表
Eg: List<CustomDataType> myList = new List<CustomDataType>();
它的数据类型是一个类。存储在列表中的每个类都包含子类,其中包含其他重载参数以及基类参数。
Eg(general form): CustomDataType listItem = new Subclass(data1, data2, data3, overloadedData1, overloadedData2) etc...
myList.Add(listItem);
创建之后,我需要从List中获取每个元素的数据并将其保存为文本文件中的字符串 为此我设置了一个foreach循环
foreach (CustomDataType listNum in myList)
{
//Code to extract data goes here here
//Should have all of the class data in a string to be ready for writing
txtFile.WriteLine(theDataFromClass)
}
txtFile.Close();
我还需要将list元素中的所有数据转换为字符串,以便可以在文件中正确写入。
如果有什么不清楚,我很乐意提供源代码,虽然在这种情况下我想用一般格式重写它
PS确实正确分配了数据。我的问题是能够访问这些数据。
我希望一切都清楚!
答案 0 :(得分:1)
我还需要将list元素中的所有数据转换为字符串,以便可以在文件中正确写入。
所以你需要编写一个完全正确的方法。有许多方法可以将事物转换为字符串 - 您需要编写代码来完成它,很可能在CustomDataType
内。您可以覆盖ToString
或创建另一个虚拟方法,在子类中重写。请注意,如果您希望能够解析结果,则可能需要考虑转义数据的某些元素。
如果您仅使用文本文件来序列化和反序列化数据,您可能需要考虑使用XML序列化或JSON序列化而不是手动执行。
(小注意:我认为你的意思是各个类包含 fields 或者属性 - 只有方法或索引器声明参数。)
答案 1 :(得分:0)
最基本的解决方案是覆盖CustomDataType
中的ToString()并生成某种对您有用的格式化输出:
public override string ToString()
{
return string.Format(
"{0}, {1}, {2}",
this.data1,
this.data2,
this.data3);
}
在派生类型中,您还重写ToString()以提供任何其他输出,并调用基类以包含这些值:
public override string ToString()
{
return string.Format(
"{0}, {1}, {2}",
base.ToString(),
this.derivedData1,
this.derivedData2);
}
现在,你的输出循环应该是这样的:
foreach (CustomDataType listNum in myList)
{
txtFile.WriteLine(listNum.ToString());
}