У меня есть класс, который я пытаюсь сериализовать и десериализовать с помощью XMLSerializer. Этот класс выглядит следующим образом:Сохранение значений объектов между XML-сериализацией и десериализацией (C#)
namespace AutoCAD_Adapter
{
/// <summary>
/// Test class meant to be serialized to test serialization methods
/// </summary>
[Serializable]
public class SerializeTest// : ISerializable
{
#region class variables
private int x;
private int y;
#endregion
#region Constructors
public SerializeTest(int passedX, int passedY)
{
this.x = passedX;
this.y = passedY;
}
private SerializeTest()
{
}
#endregion
#region Public methods
public void setX(int x)
{
this.x = x;
}
public int getX()
{
return this.x;
}
public void setY(int y)
{
this.y = y;
}
public int getY()
{
return this.y;
}
#endregion
}
}
Я в курсе вопроса XMLSerialization с классами, которые не имеют пустые параметров конструктора, которые я имел дело с созданием частного конструктора по умолчанию. Это отметил, вот моя реализация:
public void XMLSave()
{
SerializeTest input = new SerializeTest(4, 8); //Object to serialize
using (MemoryStream stream = new MemoryStream())
{
XmlSerializer serializer = new XmlSerializer(st.GetType());
serializer.Serialize(stream, input);
stream.Position = 0;
SerializeTest output = serializer.Deserialize(stream) as SerializeTest;
MessageBox.Show(output.getX() + " " + output.getY(), "Output", MessageBoxButtons.OK);
}
}
После выполнения, я ожидаю, что MessageBox, чтобы показать значение (4, 8), но вместо этого он показывает (0, 0). Мне нужно иметь возможность сохранять значения объектов во время сериализации, предпочтительно, сохраняя сериализацию XML.
Почему вы используете осуществляемые вручную аксессоры для propreties вместо автоматически генерируемый? Насколько я помню, используя public int X {get; set;} всегда работал с XML-сериализацией. –
Хорошо, я привык к Java ха-ха. спасибо –
Частные члены не сериализованы. Вам не нужен атрибут «Serializable» для 'XmlSerializer'. Почему вы не используете [свойства] (https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx)? –