DDay.iCal.Serialization.iCalendar.PeriodListSerializer.Deserialize C# (CSharp) Method

Deserialize() public method

public Deserialize ( TextReader tr ) : object
tr TextReader
return object
        public override object Deserialize(TextReader tr)
        {
            string value = tr.ReadToEnd();

            // Create the day specifier and associate it with a calendar object
            IPeriodList rdt = CreateAndAssociate() as IPeriodList;
            ISerializerFactory factory = GetService<ISerializerFactory>();
            if (rdt != null && factory != null)
            {
                // Decode the value, if necessary
                value = Decode(rdt, value);

                IStringSerializer dtSerializer = factory.Build(typeof(IDateTime), SerializationContext) as IStringSerializer;
                IStringSerializer periodSerializer = factory.Build(typeof(IPeriod), SerializationContext) as IStringSerializer;
                if (dtSerializer != null && periodSerializer != null)
                {
                    string[] values = value.Split(',');
                    foreach (string v in values)
                    {
                        IDateTime dt = dtSerializer.Deserialize(new StringReader(v)) as IDateTime;
                        IPeriod p = periodSerializer.Deserialize(new StringReader(v)) as IPeriod;

                        if (dt != null)
                        {
                            dt.AssociatedObject = rdt.AssociatedObject;
                            rdt.Add(dt);
                        }
                        else if (p != null)
                        {
                            p.AssociatedObject = rdt.AssociatedObject;
                            rdt.Add(p);
                        }
                    }
                    return rdt;
                }
            }

            return null;
        }
    }

Usage Example

Beispiel #1
0
 public PeriodList(string value) : this()
 {
     PeriodListSerializer serializer = new PeriodListSerializer();
     CopyFrom(serializer.Deserialize(new StringReader(value)) as ICopyable);
 }