Поделиться через


CodeDomSerializerBase.SerializeToExpression Метод

Определение

Выполняет сериализацию заданного объекта в выражение.

protected:
 System::CodeDom::CodeExpression ^ SerializeToExpression(System::ComponentModel::Design::Serialization::IDesignerSerializationManager ^ manager, System::Object ^ value);
protected System.CodeDom.CodeExpression SerializeToExpression (System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager, object value);
protected System.CodeDom.CodeExpression? SerializeToExpression (System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager, object? value);
member this.SerializeToExpression : System.ComponentModel.Design.Serialization.IDesignerSerializationManager * obj -> System.CodeDom.CodeExpression
Protected Function SerializeToExpression (manager As IDesignerSerializationManager, value As Object) As CodeExpression

Параметры

manager
IDesignerSerializationManager

Объект IDesignerSerializationManager, предназначенный для выполнения сериализации.

value
Object

Объект для сериализации. Может иметь значение null.

Возвращаемое значение

Объект CodeExpression, если параметр value может быть сериализован; в противном случае — null.

Исключения

manager имеет значение null.

Комментарии

Параметр value может иметь значение null, в этом случае будет возвращено примитивное выражение.

Метод SerializeToExpression использует следующие правила для сериализации типов:

  1. Сначала вызывается метод , GetExpression чтобы проверить, создано ли выражение для объекта . Если да, возвращается существующее выражение.

  2. Затем он находит сериализатор объекта и запрашивает его сериализацию.

  3. Если возвращаемым значением сериализатора объекта является CodeExpression, возвращается выражение .

  4. Он выполняет последний вызов , чтобы узнать GetExpression , добавил ли сериализатор выражение.

  5. Наконец, возвращается null.

Если не удалось создать выражение и не удалось найти подходящий сериализатор, через диспетчер сериализации будет сообщено об ошибке. Если сериализатор найден, но ему не удалось создать выражение, сообщение об ошибке не будет. В этом случае предполагается, что сериализатор либо уже сообщил об ошибке, либо не пытался сериализовать объект.

Если сериализатор вернул оператор или коллекцию операторов, эти операторы не будут отменены. Метод SerializeToExpression сначала ищет в контекстном StatementContext стеке и добавляет операторы в свойство объекта контекста инструкции StatementCollection . Если контекст оператора отсутствует, SerializeToExpression метод будет искать в контексте для CodeStatementCollection и добавлять туда операторы . Если не удается найти место для добавления инструкций, будет создана ошибка.

Примечание

Не следует вызывать метод внутри Serialize при сериализации собственного SerializeToExpression объекта. Вместо этого следует вызвать .GetExpression Если возвращается null, создайте собственное выражение и вызовите SetExpression. Затем перейдите к остальной части сериализации.

Применяется к

См. также раздел