1

我目前有一个自定义类型列表

Eg: List<CustomDataType> myList = new List<CustomDataType>();

它的数据类型是一个类。存储在列表中的每个类都包含子类,这些子类包括额外的重载参数以及基类参数。

Eg(general form): CustomDataType listItem = new Subclass(data1, data2, data3, overloadedData1, overloadedData2) etc...
myList.Add(listItem);

创建后,我需要从列表中获取每个元素的数据并将其保存为文本文件中的字符串为此我设置了一个 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();

我还需要将列表元素内的所有数据转换为字符串,以便可以将其正确地写在文件中。

如果有什么不清楚的地方,我很乐意提供源代码,尽管这次我想以一般格式重写它

PS确实有数据被正确分配。我的问题是关于能够访问这些数据。

我希望一切都清楚!

4

2 回答 2

1

我还需要将列表元素内的所有数据转换为字符串,以便可以将其正确地写在文件中。

所以你需要编写一个方法来做到这一点。将事物转换为字符串的方法有很多种——您需要编写代码来完成它,很可能在CustomDataType. 您可以覆盖ToString或创建另一个在子类中覆盖的虚拟方法。请注意,如果您希望能够解析结果,则可能需要考虑转义数据的某些元素。

如果您使用文本文件来序列化和反序列化数据,您可能需要考虑使用 XML 序列化或 JSON 序列化,而不是手动执行。

(小提示:我认为您的意思是各种类包含字段属性- 只有方法或索引器声明参数。)

于 2012-04-08T06:49:20.067 回答
0

最基本的解决方案是覆盖 ToString()CustomDataType并生成某种对您有用的格式化输出:

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());
}
于 2012-04-08T10:32:15.453 回答