Когда вы говорите, что «изменили класс на сериализуемый», означает ли это, что вы добавили к ним атрибут [Serializable]
?Если это так: классы, отмеченные этим атрибутом, имеют все свои поля , сериализованные (без свойств).В приведенном ниже примере этот класс не имеет никаких атрибутов и имеет конструктор без параметров, поэтому он считается типом «POCO» (обычный старый объект CLR).Типы POCO имеют свои открытые члены (поля или свойства) сериализованные.Если вы украсите его с помощью [Serializable], то оно попадет в правило сериализации.
Почему вам нужно пометить свой тип с помощью [Serializable]?Если вам действительно нужно это сделать (для некоторых устаревших сериализаторов), вы также можете украсить свой тип атрибутами [DataContract]
и [DataMember]
, которые учитываются сериализатором WCF.Вы добавили бы [DataContract] для типа и [DataMember] для свойств , которые вы хотите сериализовать.
public class Person
{
private string _Name;
private int _Age;
public string Name {
get { return this._Name; }
set { this._Name = value; }
}
public string Age {
get { return this._Age; }
set { this._Age = value; }
}
}