コード例 #1
0
 public AssociatedCalendarParameterList(ICalendarParameterList list, ICalendarObject parent, ICalendarParameterListContainer container) :
     this(parent, container)
 {
     if (list != null)
     {
         if (m_AssociatedContainer != null &&
             m_AssociatedContainer.Parameters != null)
         {
             foreach (ICalendarParameter p in list)
             {
                 if (!m_AssociatedContainer.Parameters.Contains(p))
                 {
                     m_AssociatedContainer.Parameters.Add(p);
                 }
             }
         }
         else
         {
             foreach (ICalendarParameter p in list)
             {
                 m_Parameters.Add(p);
             }
         }
     }
 }
コード例 #2
0
 /// <summary>
 /// Copies values from the target object to the
 /// current object.
 /// </summary>
 virtual public void CopyFrom(ICopyable obj)
 {
     if (obj is ICalendarDataType)
     {
         ICalendarDataType dt = (ICalendarDataType)obj;
         AssociatedObject = dt.AssociatedObject;
         _Parameters      = new AssociatedCalendarParameterList(dt.Parameters, _AssociatedObject, _AssociatedObject as ICalendarParameterListContainer);
     }
 }
コード例 #3
0
        public AssociatedCalendarParameterList(ICalendarObject parent, ICalendarParameterListContainer container)
        {
            m_Parent = parent;
            m_AssociatedContainer = container;
            m_Parameters          = new CalendarParameterList(parent, true);

            m_Parameters.ItemAdded   += new EventHandler <ObjectEventArgs <ICalendarParameter> >(Parameters_ItemAdded);
            m_Parameters.ItemRemoved += new EventHandler <ObjectEventArgs <ICalendarParameter> >(Parameters_ItemRemoved);
            if (container != null)
            {
                container.Parameters.ItemAdded   += new EventHandler <ObjectEventArgs <ICalendarParameter> >(Parameters_ItemAdded);
                container.Parameters.ItemRemoved += new EventHandler <ObjectEventArgs <ICalendarParameter> >(Parameters_ItemRemoved);
            }
            ItemAdded   += new EventHandler <ObjectEventArgs <ICalendarParameter> >(CalendarParameterList_ItemAdded);
            ItemRemoved += new EventHandler <ObjectEventArgs <ICalendarParameter> >(CalendarParameterList_ItemRemoved);
        }
コード例 #4
0
 public AssociatedCalendarParameterList(ICalendarParameterList list, ICalendarObject parent, ICalendarParameterListContainer container) : 
     this(parent, container)
 {
     if (list != null)
     {
         if (m_AssociatedContainer != null &&
             m_AssociatedContainer.Parameters != null)
         {
             foreach (ICalendarParameter p in list)
             {
                 if (!m_AssociatedContainer.Parameters.Contains(p))
                     m_AssociatedContainer.Parameters.Add(p);
             }
         }
         else
         {
             foreach (ICalendarParameter p in list)
                 m_Parameters.Add(p);
         }
     }
 }
コード例 #5
0
 public CalendarParameterCompositeListEnumerator(ICalendarParameterList parameterList, string parameterName)
 {
     m_ParameterList = parameterList;
     m_ParameterName = parameterName;
 }
コード例 #6
0
        public override string SerializeToString(object obj)
        {
            ICalendarProperty prop = obj as ICalendarProperty;

            if (prop != null &&
                prop.Value != null)
            {
                // Don't serialize the property if the value is null

                // Push this object on the serialization context.
                SerializationContext.Push(prop);

                IDataTypeMapper mapper         = GetService <IDataTypeMapper>();
                Type            serializedType = mapper.GetPropertyMapping(prop);

                // Build a list of values that are to be serialized.
                List <object> objs = new List <object>();
                if (!(prop.Value is string) &&
                    !(typeof(IEnumerable <string>).IsAssignableFrom(serializedType)) &&
                    prop.Value is IEnumerable)
                {
                    foreach (object v in (IEnumerable)prop.Value)
                    {
                        objs.Add(v);
                    }
                }
                else
                {
                    objs.Add(prop.Value);
                }

                // Get a serializer factory that we can use to serialize
                // the property and parameter values
                ISerializerFactory sf = GetService <ISerializerFactory>();

                StringBuilder result = new StringBuilder();
                foreach (object v in objs)
                {
                    // Get a serializer to serialize the property's value.
                    // If we can't serialize the property's value, the next step is worthless anyway.
                    IStringSerializer valueSerializer = sf.Build(v.GetType(), SerializationContext) as IStringSerializer;
                    if (valueSerializer != null)
                    {
                        // Iterate through each value to be serialized,
                        // and give it a property (with parameters).
                        // FIXME: this isn't always the way this is accomplished.
                        // Multiple values can often be serialized within the
                        // same property.  How should we fix this?

                        // NOTE:
                        // We Serialize the property's value first, as during
                        // serialization it may modify our parameters.
                        // FIXME: the "parameter modification" operation should
                        // be separated from serialization. Perhaps something
                        // like PreSerialize(), etc.
                        string value = valueSerializer.SerializeToString(v);

                        // Get the list of parameters we'll be serializing
                        ICalendarParameterList parameterList = prop.Parameters;
                        if (v is ICalendarDataType)
                        {
                            parameterList = ((ICalendarDataType)v).Parameters;
                        }

                        StringBuilder sb = new StringBuilder(prop.Name);
                        if (parameterList.Count > 0)
                        {
                            // Get a serializer for parameters
                            IStringSerializer parameterSerializer = sf.Build(typeof(ICalendarParameter), SerializationContext) as IStringSerializer;
                            if (parameterSerializer != null)
                            {
                                // Serialize each parameter
                                List <string> parameters = new List <string>();
                                foreach (ICalendarParameter param in parameterList)
                                {
                                    parameters.Add(parameterSerializer.SerializeToString(param));
                                }

                                // Separate parameters with semicolons
                                sb.Append(";");
                                sb.Append(string.Join(";", parameters.ToArray()));
                            }
                        }
                        sb.Append(":");
                        sb.Append(value);

                        result.Append(TextUtil.WrapLines(sb.ToString()));
                    }
                }

                // Pop the object off the serialization context.
                SerializationContext.Pop();

                return(result.ToString());
            }
            return(null);
        }
コード例 #7
0
 void Initialize()
 {
     _Parameters      = new AssociatedCalendarParameterList(null, null);
     _ServiceProvider = new ServiceProvider();
 }
コード例 #8
0
 private void Initialize()
 {
     m_Parameters = new CalendarParameterList(this, true);
 }
コード例 #9
0
 private void Initialize()
 {
     m_Parameters = new CalendarParameterList(this, true);
 }
コード例 #10
0
        public AssociatedCalendarParameterList(ICalendarObject parent, ICalendarParameterListContainer container)
        {
            m_Parent = parent;
            m_AssociatedContainer = container;
            m_Parameters = new CalendarParameterList(parent, true);

            m_Parameters.ItemAdded += new EventHandler<ObjectEventArgs<ICalendarParameter>>(Parameters_ItemAdded);
            m_Parameters.ItemRemoved += new EventHandler<ObjectEventArgs<ICalendarParameter>>(Parameters_ItemRemoved);
            if (container != null)
            {
                container.Parameters.ItemAdded += new EventHandler<ObjectEventArgs<ICalendarParameter>>(Parameters_ItemAdded);
                container.Parameters.ItemRemoved += new EventHandler<ObjectEventArgs<ICalendarParameter>>(Parameters_ItemRemoved);
            }
            ItemAdded += new EventHandler<ObjectEventArgs<ICalendarParameter>>(CalendarParameterList_ItemAdded);
            ItemRemoved += new EventHandler<ObjectEventArgs<ICalendarParameter>>(CalendarParameterList_ItemRemoved);
        }