从类型类的List访问字符串参数数据

时间:2012-04-08 06:45:44

标签: c# list class subclass custom-data-type

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

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确实正确分配了数据。我的问题是能够访问这些数据。

我希望一切都清楚!

2 个答案:

答案 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());
}