Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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();
            }
        }