Я пишу код сериализации для класса Collection<T>
и хотел бы знать, как устанавливать и получать элементы в коллекции.Я использую двоичную сериализацию.
Я сделал попытку в следующем коде, но не уверен в правильном подходе.
Вот мой код:
[Serializable]
public class EmployeeCollection<Employee> : Collection<Employee>, ISerializable
{
public int EmpId;
public string EmpName;
public EmployeeCollection()
{
EmpId = 1;
EmpName = "EmployeeCollection1";
}
public EmployeeCollection(SerializationInfo info, StreamingContext ctxt)
{
EmpId = (int)info.GetValue("EmployeeId", typeof(int));
EmpName = (String)info.GetValue("EmployeeName", typeof(string));
//Not sure on the correct code for the following lines
var EmployeeCollection = (List<Employee>)info.GetValue("EmployeeCollection", typeof(List<Employee>));
for (int i = 0; i < EmployeeCollection.Count; i++)
{
this.Add(EmployeeCollection[i]);
}
}
public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
{
info.AddValue("EmployeeId", EmpId);
info.AddValue("EmployeeName", EmpName);
//Not sure on the correct code for the following lines
var EmployeeCollection = new List<Employee>();
for (int i = 0; i < this.Count; i++)
{
EmployeeCollection.Add(this[i]);
}
info.AddValue("EmployeeCollection", EmployeeCollection);
}
В методе GetObjectData
List<Employee>
успешно добавляется к SerializationInfo
.Однако в методе EmployeeCollection
в List<Employee>
есть запись null
для каждого добавленного элемента.
Как правильно сериализовать и десериализовать элементы в классе Collection<T>
при реализации ISerializable
интерфейс?