Share via


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

参数

value
Object

要序列化的对象。 可以为 null

返回

如果 value 可以序列化,则为 CodeExpression 对象;否则为 null

例外

managernull

注解

参数 value 可以是 null,在这种情况下,将返回基元表达式。

方法 SerializeToExpression 使用以下规则对序列化类型:

  1. 它首先调用 GetExpression 方法,以查看是否已为 对象创建表达式。 如果是,则返回现有表达式。

  2. 然后,它会找到对象的序列化程序,并要求它序列化。

  3. 如果对象的序列化程序的返回值为 , CodeExpression则返回表达式。

  4. 它最后一次调用, GetExpression 以查看序列化程序是否添加了表达式。

  5. 最后,它返回 null

如果无法创建任何表达式,并且找不到合适的序列化程序,将通过序列化管理器报告错误。 如果已找到序列化程序,但无法生成表达式,则不会报告错误。 在这种情况下,假定序列化程序已报告错误,或者未尝试序列化对象。

如果序列化程序返回语句或语句集合,则不会丢弃这些语句。 方法 SerializeToExpression 将首先在上下文堆栈上查找 , StatementContext 并将 语句添加到语句上下文对象的 StatementCollection 属性。 如果没有语句上下文,方法 SerializeToExpression 将在上下文中查找 , CodeStatementCollection 并在其中添加 语句。 如果找不到添加 语句的位置,将生成错误。

注意

序列化自己的 对象时,不应在 中Serialize调用 SerializeToExpression 方法。 应改为调用 GetExpression。 如果返回 null,请创建自己的表达式并调用 SetExpression。 然后继续执行序列化的其余部分。

适用于

另请参阅