Voici mon code:Sérialisation en C# sans sérialisation d'une liste lorsqu'il y a un DataTable sur le côté?
[Serializable()]
public class Project
{
private List<string> _Kinds = new List<string>();
public DataTable ExtractedElementsTable;
public Project()
{
ExtractedElementsTable = new DataTable();
ExtractedElementsTable.TableName = "Output";
}
public List<string> Kinds
{
get { return _Kinds; }
set { _Kinds = value; }
}
}
Quand, après avoir ajouté des choses au List<string> _Kinds
, j'essaie de sérialiser l'ensemble Poject
et désérialiser puis, la liste _Kinds
est vide. Mais si je commente toutes les trois lignes où ExtractedElementsTable
est référencé, cela fonctionne bien. Voici est mon sérialisation et le code désérialisation (notez la ligne currentProject.Kinds.Add("hi");
dans le code de sérialisation. currentProject
est juste un exemple de projet.
private void openButton_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Stream stream = File.Open(openFileDialog1.FileName, FileMode.Open);
XmlSerializer xmlFormatter = new XmlSerializer(currentProject.GetType());
currentProject = (Project)xmlFormatter.Deserialize(stream);
stream.Close();
}
}
private void saveButton_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
currentProject.Kinds.Add("hi");
Stream stream = File.Open(saveFileDialog1.FileName, FileMode.Create);
XmlSerializer xmlFormatter = new XmlSerializer(currentProject.GetType());
xmlFormatter.Serialize(stream, currentProject);
stream.Close();
}
}
Votre intention est-elle également de sérialiser la table de données, ou voulez-vous qu'elle soit omise de la sérialisation? – kbrimington
Je le veux sérialisé – Juan