virtual public void Serialize(Stream stream, Encoding encoding) { Type type = m_dataType.GetType(); ISerializable serializer = null; Type serializerType = Type.GetType(GetType().Namespace + "." + type.Name + "Serializer", false, true); if (serializerType != null) { serializer = (ISerializable)Activator.CreateInstance(serializerType, new object[] { m_dataType }); } if (serializer == null) { if (m_dataType is EncodableDataType) { serializer = new EncodableDataTypeSerializer(m_dataType as EncodableDataType); } else { serializer = new FieldSerializer(m_dataType); } } if (serializer != null) { string value = m_dataType.Name; if (serializer is IParameterSerializable) { IParameterSerializable paramSerializer = (IParameterSerializable)serializer; List <Parameter> Parameters = paramSerializer.Parameters; if (Parameters.Count > 0) { List <string> values = new List <string>(); foreach (Parameter p in Parameters) { ParameterSerializer pSerializer = new ParameterSerializer(p); values.Add(pSerializer.SerializeToString()); } value += ";" + string.Join(";", values.ToArray()); } } value += ":"; value += serializer.SerializeToString(); value += "\r\n"; ISerializable clSerializer = new ContentLineSerializer(value); if (clSerializer != null) { clSerializer.Serialize(stream, encoding); } } }
virtual public void Serialize(XmlTextWriter xtw) { Type type = m_dataType.GetType(); IXCalSerializable serializer = null; Type serializerType = Type.GetType(GetType().Namespace + "." + type.Name + "Serializer", false, true); if (serializerType != null) { serializer = (IXCalSerializable)Activator.CreateInstance(serializerType, new object[] { m_dataType }); } if (serializer == null) { serializer = new FieldSerializer(m_dataType); } if (serializer != null) { xtw.WriteStartElement(m_dataType.Name.ToLower()); if (serializer is IParameterSerializable) { IParameterSerializable paramSerializer = (IParameterSerializable)serializer; List <Parameter> Parameters = paramSerializer.Parameters; foreach (Parameter param in paramSerializer.Parameters) { xtw.WriteAttributeString(param.Name.ToLower(), string.Join(",", param.Values.ToArray())); } } // Determine if we should serialize the data of this serializer // as CDATA instead of a standard string. if (serializer.GetType().GetCustomAttributes(typeof(CDataAttribute), true).Length > 0) { xtw.WriteCData(serializer.SerializeToString()); } else { xtw.WriteString(serializer.SerializeToString()); } xtw.WriteEndElement(); } }