C# 序列化Arraylist的Arraylist
我的应用程序中有一个DatagridView。我想将gridview列序列化为XML文件。仅序列化列名称很容易,但我也想序列化列索引 序列化列将执行以下操作:C# 序列化Arraylist的Arraylist,c#,.net,serialization,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("te
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);
}
但是我想知道如何序列化列索引呢
提前感谢您的帮助 创建一个带有名称和索引的公共类ColumnInfo,您可以将其存储到可以进行序列化的数组列表中
[Serializable]
public class ColumnInfo
{
public string Name;
public int Index;
}
ArrayList array = new ArrayList();
foreach(DataGridViewColumn column in datagridView1.Columns)
{
ColumnInfo ci = new ColumnInfo();
ci.Name = column.Name;
//ci.Index = column.Index; //decide how to get column index
array.Add(ci);
}
using (FileStream file = new FileStream("test.xml", FileMode.Create))
{
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(file, array);
}
更新我个人使用XMLFormatter,例如,我从问题中复制了源示例。感谢您abstishchev创建一个带有名称和索引的公共类ColumnInfo,您可以将其存储到可以进行序列化的数组列表中
[Serializable]
public class ColumnInfo
{
public string Name;
public int Index;
}
ArrayList array = new ArrayList();
foreach(DataGridViewColumn column in datagridView1.Columns)
{
ColumnInfo ci = new ColumnInfo();
ci.Name = column.Name;
//ci.Index = column.Index; //decide how to get column index
array.Add(ci);
}
using (FileStream file = new FileStream("test.xml", FileMode.Create))
{
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(file, array);
}
更新我个人使用XMLFormatter,例如,我从问题中复制了源示例。谢谢abstishchev有两件事需要事先注意:
- 由于您没有创建soap消息,我建议使用
或BinarySerializer
进行特殊序列化XmlSerializer
- 您肯定更喜欢强类型的
而不是非类型的列表
数组列表
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);
}
使用(FileStream file=newfilestream(“test.xml”,FileMode.Create))
{
变量列名=
dataGridView1.Columns
.Cast()
.OrderBy(x=>x.ColumnIndex)
.选择(x=>x.Name);
foreach(columnNames中的字符串列)
file.WriteLine(列);
}
首先要注意两件事:
- 由于您没有创建soap消息,我建议使用
或BinarySerializer
进行特殊序列化XmlSerializer
- 您肯定更喜欢强类型的
而不是非类型的列表
数组列表
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);
}
使用(FileStream file=newfilestream(“test.xml”,FileMode.Create))
{
变量列名=
dataGridView1.Columns
.Cast()
.OrderBy(x=>x.ColumnIndex)
.选择(x=>x.Name);
foreach(columnNames中的字符串列)
file.WriteLine(列);
}
@Gopalakrishnan Subramani-如果不进行反序列化,那么如何反序列化该列的列名和索引呢。你知道吗?你为什么用SoapFormatter来代替XmlFormatter
?老实说,我不知道SoapFormatter。。因为OP已经知道如何将序列化与SoapFormatter一起使用,所以我使用了相同的示例。@abatishchev-不知道为什么。在我的情况下,哪一个更好?@Erika:我建议对XML输出使用XmlFormatter,对XML输出使用BinaryFormatterbinary@GopalakrishnanSubramani-如果没有反序列化,那么如何反序列化该列的列名和索引呢。你知道吗?你为什么用SoapFormatter来代替XmlFormatter
?老实说,我不知道SoapFormatter。。因为OP已经知道如何将序列化与SoapFormatter一起使用,所以我使用了相同的示例。@abatishchev-不知道为什么。在我的情况下,哪一个更好?@Erika:我建议使用XmlFormatter进行XML输出,使用BinaryFormatter进行二进制输出。您使用SoapFormatter进行XML序列化,而不是使用XmlFormatter
?您使用的是.NET的哪个版本?如果您使用的是.NET 2.0或更高版本,那么您根本不应该使用ArrayList。@John Saunders-我使用的是3.5。您使用SoapFormatter进行XML序列化,而不是使用XmlFormatter
?您使用的是.NET的哪个版本?如果您使用的是.NET2.0或更高版本,则根本不应该使用ArrayList。@John Saunders-Iam使用的是3.5。