Проигнорируйте двоичную сериализацию на свойстве

У меня есть регулярный 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); }
  }
}
33
задан Henrik 24 April 2012 в 11:24
поделиться

4 ответа

Обмануть и использовать метод

[Serializable()]
public class Foo
{
  public IList<Number> Nums { get; set; }

  public long GetValueTotal()
  {
    return Nums.Sum(x => x.value);
  }
}
-13
ответ дан 27 November 2019 в 17:44
поделиться

ValueTotal уже игнорируется. Сериализуются только данные, а не методы. На самом деле свойства - это методы.

Если вы хотите игнорировать поля и не сериализовать их, отметьте их как [NonSerialized] .

'Или'

вы можете реализовать ISerializable и не сериализовать это поле.

Вот пример кода о том, как реализовать ISerializable и сериализовать данные: http://www.c-sharpcorner.com/UploadFile/yougerthen/102162008172741PM/1.aspx

61
ответ дан 27 November 2019 в 17:44
поделиться

    [NonSerialized]
    private IList<Number> nums;
    public IList<Number> Nums { get {return nums;} set { nums = value; }  } 
35
ответ дан 27 November 2019 в 17:44
поделиться

Реализовать интерфейс ISerializable и затем использовать [XmlIgnore] для сериализации XML в методе GetObjectData(), но затем выводить в двоичном виде. На самом деле это проще, чем то, как я только что описал.

Идеи см. в http://www.c-sharpcorner.com/UploadFile/yougerthen/102162008172741PM/1.aspx

0
ответ дан 27 November 2019 в 17:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: