/// <summary> /// Construtor para serialização. /// </summary> /// <param name="info"></param> /// <param name="context"></param> protected FunctionCall(SerializationInfo info, StreamingContext context) : base(info, context) { _call = (ConditionalTerm)info.GetValue("M", Type.GetType(info.GetString("T"), true)); var size = info.GetInt32("S"); _parameters = new ConditionalTerm[size]; for (var i = 0; i < size; ++i) { _parameters[i] = GetTerm(info, i); } _options = (FunctionCallOptions)info.GetInt32("Options"); }
/// <summary> /// Desserializa a instância previamente serializada em formato binário. /// </summary> /// <param name="reader"></param> protected override void Deserialize(CompactReader reader) { _call = GetConditionalTerm(reader); _options = (FunctionCallOptions)(int)reader.ReadInt32(); var size = reader.ReadInt32(); _parameters = new ConditionalTerm[size]; for (var i = 0; i < size; ++i) { if (reader.ReadBoolean()) { _parameters[i] = GetConditionalTerm(reader); } } }
/// <summary> /// Desserializa a instância previamente serializada em formato XML. /// </summary> /// <param name="reader"></param> protected override void ReadXml(XmlReader reader) { if (reader.IsEmptyElement) { reader.Skip(); } else { reader.MoveToAttribute("options"); _options = (FunctionCallOptions)reader.ReadContentAsInt(); reader.MoveToElement(); reader.ReadStartElement(); _call = GetConditionalTerm(reader); var par = new List <ConditionalTerm>(); reader.ReadStartElement(ListQualifiedName.Name, ListQualifiedName.Namespace); while (reader.NodeType != XmlNodeType.EndElement) { par.Add(GetConditionalTerm(reader)); } _parameters = par.ToArray(); reader.ReadEndElement(); reader.ReadEndElement(); } }