У меня есть регулярный C# ПОСТЕПЕННО. На уровне класса я украшаю объект [Serializable()]
.
Тем не менее я использую Linq Sum()
на одном из свойств и я получаю ошибку после сериализации. Если возможно, я хотел бы просто проигнорировать это свойство. Однако [XmlIgnore()]
только для XML-сериализации, не Двоичной. Какие-либо идеи или мысли?
Код - что-то вроде этого, где я хотел бы проигнорировать ValueTotal
:
[Serializable()]
public class Foo
{
public IList<Number> Nums { get; set; }
public long ValueTotal
{
get { return Nums.Sum(x => x.value); }
}
}
Обмануть и использовать метод
[Serializable()]
public class Foo
{
public IList<Number> Nums { get; set; }
public long GetValueTotal()
{
return Nums.Sum(x => x.value);
}
}
ValueTotal
уже игнорируется. Сериализуются только данные, а не методы. На самом деле свойства - это методы.
Если вы хотите игнорировать поля и не сериализовать их, отметьте их как [NonSerialized]
.
'Или'
вы можете реализовать ISerializable
и не сериализовать это поле.
Вот пример кода о том, как реализовать ISerializable
и сериализовать данные: http://www.c-sharpcorner.com/UploadFile/yougerthen/102162008172741PM/1.aspx
[NonSerialized]
private IList<Number> nums;
public IList<Number> Nums { get {return nums;} set { nums = value; } }
Реализовать интерфейс ISerializable
и затем использовать [XmlIgnore]
для сериализации XML в методе GetObjectData(), но затем выводить в двоичном виде. На самом деле это проще, чем то, как я только что описал.
Идеи см. в http://www.c-sharpcorner.com/UploadFile/yougerthen/102162008172741PM/1.aspx