c# - 序列化 ArrayList 的 Arraylist

标签 c# .net serialization arraylist

我的应用程序中有一个 DatagridView。我想将 gridview 列序列化为 XML 文件。只序列化列名很容易,但我也想序列化列索引。

我会像这样序列化列:

ArrayList array = new ArrayList();
foreach(DataGridViewColumn column in datagridView1.Columns)
{
    array.Add(column.Name)
}

using (FileStream file = new FileStream("test.xml", FileMode.Create))
{
     SoapFormatter formatter = new SoapFormatter();
     formatter.Serialize(file, array);
}

但我想知道如何也序列化列索引?

在此先感谢您的帮助!

最佳答案

需要注意的两点:

  • 由于您不是在创建 soap 消息,我建议 BinarySerializerXmlSerializer用于临时序列化。
  • 你绝对应该更喜欢强类型 List<string>在未类型化的 ArrayList 上.

话虽如此,我建议反对完全序列化——它对您的目的来说太重量级了,而且对于长期存储或传输对象(例如,假设你在你的应用程序的 v1.0 中序列化一个类,然后在 v2.0 中反序列化它,各种奇怪的事情都可能发生)。

我建议采用以下方法:按索引对列进行排序,然后将它们逐行写入文件。您的列将在您的文件中正确排序:

using(FileStream file = new FileStream("test.xml", FileMode.Create))
{   
    var columnNames =
        dataGridView1.Columns
        .Cast<DataGridViewColumn>()
        .OrderBy(x => x.ColumnIndex)
        .Select(x => x.Name);

    foreach(string column in columnNames)
        file.WriteLine(column);
}

关于c# - 序列化 ArrayList 的 Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6191493/

相关文章:

php - 我应该在什么基础上构建我的 alpha 平台,PHP、Ruby、Python、.NET 等?

python - 在 Django 中,如何序列化返回 dict 对象(使用 .values() 创建)的 QuerySet

android - 如何将 Kotlin 序列化添加到新的 Android 项目?

c# - AddDays 在 MVC4 中不起作用?

c# - C#中的事件数组?

c# - WPF MVVM 从 VIEW MODEL 获取父级

.net - 为什么代码契约会生成 MyAssembly.Contracts.pdb 文件?

c# - .Net Core 2.0 中不能覆盖 OnActionExecuted 方法

c# - 从字符串映射枚举

c++ - Boost序列化示例错误: symbol(s) not found for architecture x86_64