Я читаю о сериализации и до сих пор путаюсь с BinaryFormatter и SoapFormatter. Пока что так хорошо - и все отлично и сериализовано, и десериализовано.Ошибки сериализации в .NET?
Однако, когда я пробую код ниже, я бы ожидал, что мой файл данных НЕ содержит информацию для Name - и это так. Почему он должен содержать это, когда я укажу SoapIgnore на поле?
Я также пробовал с SoapAttribute("SomeAttribute")
по возрасту, и это тоже не имело никакого значения. Версия фрейма установлена в 2.0, но то же самое происходит в 3.5 и 4.0.
using System;
using System.Runtime.Serialization.Formatters.Soap;
using System.IO;
using System.Xml.Serialization;
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Age = 42;
p.Name = "Mr Smith";
SoapFormatter formatter = new SoapFormatter();
FileStream fs = new FileStream(@"c:\test\data.txt", FileMode.Create);
formatter.Serialize(fs, p);
}
}
[Serializable]
class Person
{
public int Age;
[SoapIgnore]
public string Name;
}
Это не только способ игнорировать некоторые поля во время сериализации. – Bart
Существует SoapFormatter, который предназначен для сериализации данных. Я не говорю о конверте мыла с веб-сервисом. В MSDN он сам заявляет следующее о SoapFormatters: «Сериализует и десериализует объект или весь график подключенных объектов в формате SOAP». –
@Bart, @Peter Olsen - я прочитал немного больше о вашем вопросе и некоторых ответах, и мой «ответ» не является полным или точным. У меня возникло соблазн удалить его, но это лишило бы потенциальных сторонников ясной и настоящей возможности. –