сессия: переход от InProc к сессии SQL - PullRequest
1 голос
/ 30 августа 2011

Я переключаюсь с сессии InProc на сессию сервера SQL. В настоящее время мой объект сеанса выглядит так:

public class UserSession{

  public string TheStrings {get;set;}
  public int TheInts {get;set;}

  public List<MyObjectModel> ListOfObjects {get;set;}

}

Он в основном содержит строки, целые и несколько списков объектов. Я сохраняю этот объект в сеансе, а затем, когда мне нужно получить доступ к сеансу, я могу написать UserSession.TheStrings.

Теперь, когда я преобразую это в сеанс SQL, сериализация вступает в игру. Нужно ли добавлять атрибут [serializable] только ко всему классу или мне также нужно добавить его в определение класса всех MyObjectModels?

Спасибо.

1 Ответ

1 голос
/ 30 августа 2011

Я почти уверен, что он будет сериализован по умолчанию, если все в ваших объектах простые типы.

Класс SerializableAttribute

Примените атрибут SerializableAttributeк типу, чтобы указать, что экземпляры этого типа могут быть сериализованы.Среда исполнения общего языка генерирует исключение SerializationException, если какой-либо тип в графе сериализуемых объектов не имеет примененного атрибута SerializableAttribute.

Примените атрибут SerializableAttribute, даже если класс также реализует интерфейс ISerializable для управления процессом сериализации.

Все открытые и закрытые поля в типе, помеченные атрибутом SerializableAttribute, сериализуются по умолчанию, если только тип не реализует интерфейс ISerializable для переопределения процесса сериализации.Процесс сериализации по умолчанию исключает поля, помеченные атрибутом NonSerializedAttribute.Если поле сериализуемого типа содержит указатель, дескриптор или некоторую другую структуру данных, специфичную для конкретной среды, и не может быть разумно восстановлена ​​в другой среде, тогда вы можете применить атрибут NonSerializedAttribute к этому полю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...