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 использует следующие правила для сериализации типов:
Сначала вызывается метод , GetExpression чтобы проверить, создано ли выражение для объекта . Если да, возвращается существующее выражение.
Затем он находит сериализатор объекта и запрашивает его сериализацию.
Если возвращаемым значением сериализатора объекта является CodeExpression, возвращается выражение .
Он выполняет последний вызов , чтобы узнать GetExpression , добавил ли сериализатор выражение.
Наконец, возвращается
null
.
Если не удалось создать выражение и не удалось найти подходящий сериализатор, через диспетчер сериализации будет сообщено об ошибке. Если сериализатор найден, но ему не удалось создать выражение, сообщение об ошибке не будет. В этом случае предполагается, что сериализатор либо уже сообщил об ошибке, либо не пытался сериализовать объект.
Если сериализатор вернул оператор или коллекцию операторов, эти операторы не будут отменены. Метод SerializeToExpression сначала ищет в контекстном StatementContext стеке и добавляет операторы в свойство объекта контекста инструкции StatementCollection . Если контекст оператора отсутствует, SerializeToExpression метод будет искать в контексте для CodeStatementCollection и добавлять туда операторы . Если не удается найти место для добавления инструкций, будет создана ошибка.
Примечание
Не следует вызывать метод внутри Serialize при сериализации собственного SerializeToExpression объекта. Вместо этого следует вызвать .GetExpression Если возвращается null
, создайте собственное выражение и вызовите SetExpression. Затем перейдите к остальной части сериализации.