/// <summary>
        /// Constructs a dictionary object (key or entry value) from the specified type and string list.
        /// </summary>
        /// <param name="type">Object type to construct.</param>
        /// <param name="value">Value of the dictionary object as a string list</param>
        /// <param name="service">The service.</param>
        /// <returns>Dictionary object.</returns>
        private object ConstructObject(
            UserConfigurationDictionaryObjectType type, 
            List<string> value, 
            ExchangeService service)
        {
            EwsUtilities.Assert(
                value != null,
                "UserConfigurationDictionary.ConstructObject",
                "value is null");
            EwsUtilities.Assert(
                (value.Count == 1 || type == UserConfigurationDictionaryObjectType.StringArray),
                "UserConfigurationDictionary.ConstructObject",
                "value is array but type is not StringArray");

            object dictionaryObject = null;

            switch (type)
            {
                case UserConfigurationDictionaryObjectType.Boolean:
                    dictionaryObject = bool.Parse(value[0]);
                    break;

                case UserConfigurationDictionaryObjectType.Byte:
                    dictionaryObject = byte.Parse(value[0]);
                    break;

                case UserConfigurationDictionaryObjectType.ByteArray:
                    dictionaryObject = Convert.FromBase64String(value[0]);
                    break;

                case UserConfigurationDictionaryObjectType.DateTime:
                    DateTime? dateTime = service.ConvertUniversalDateTimeStringToLocalDateTime(value[0]);

                    if (dateTime.HasValue)
                    {
                        dictionaryObject = dateTime.Value;
                    }
                    else
                    {
                        EwsUtilities.Assert(
                            false,
                            "UserConfigurationDictionary.ConstructObject",
                            "DateTime is null");
                    }

                    break;

                case UserConfigurationDictionaryObjectType.Integer32:
                    dictionaryObject = int.Parse(value[0]);
                    break;

                case UserConfigurationDictionaryObjectType.Integer64:
                    dictionaryObject = long.Parse(value[0]);
                    break;

                case UserConfigurationDictionaryObjectType.String:
                    dictionaryObject = value[0];
                    break;

                case UserConfigurationDictionaryObjectType.StringArray:
                    dictionaryObject = value.ToArray();
                    break;

                case UserConfigurationDictionaryObjectType.UnsignedInteger32:
                    dictionaryObject = uint.Parse(value[0]);
                    break;

                case UserConfigurationDictionaryObjectType.UnsignedInteger64:
                    dictionaryObject = ulong.Parse(value[0]);
                    break;

                default:
                    EwsUtilities.Assert(
                        false,
                        "UserConfigurationDictionary.ConstructObject",
                        "Type not recognized: " + type.ToString());
                    break;
            }

            return dictionaryObject;
        }
        /// <summary>
        /// Extracts a dictionary object (key or entry value) as a string list from the
        /// specified reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="type">The object type.</param>
        /// <returns>String list representing a dictionary object.</returns>
        private List<string> GetObjectValue(EwsServiceXmlReader reader, UserConfigurationDictionaryObjectType type)
        {
            EwsUtilities.Assert(
                reader != null,
                "UserConfigurationDictionary.LoadFromXml",
                "reader is null");

            List<string> values = new List<string>();

            reader.ReadStartElement(this.Namespace, XmlElementNames.Value);

            do
            {
                string value = null;

                if (reader.IsEmptyElement)
                {
                    // Only string types can be represented with empty values.
                    switch (type)
                    {
                        case UserConfigurationDictionaryObjectType.String:
                        case UserConfigurationDictionaryObjectType.StringArray:
                            value = string.Empty;
                            break;
                        default:
                            EwsUtilities.Assert(
                                false,
                                "UserConfigurationDictionary.GetObjectValue",
                                "Empty element passed for type: " + type.ToString());
                            break;
                    }
                }
                else
                {
                    value = reader.ReadElementValue();
                }

                values.Add(value);

                reader.Read(); // Position at next element or DictionaryKey/DictionaryValue end element
            }
            while (reader.IsStartElement(this.Namespace, XmlElementNames.Value));

            return values;
        }
Beispiel #3
0
        /// <summary>
        /// Constructs a dictionary object (key or entry value) from the specified type and string list.
        /// </summary>
        /// <param name="type">Object type to construct.</param>
        /// <param name="value">Value of the dictionary object as a string list</param>
        /// <param name="service">The service.</param>
        /// <returns>Dictionary object.</returns>
        private object ConstructObject(
            UserConfigurationDictionaryObjectType type,
            List <string> value,
            ExchangeService service)
        {
            EwsUtilities.Assert(
                value != null,
                "UserConfigurationDictionary.ConstructObject",
                "value is null");
            EwsUtilities.Assert(
                (value.Count == 1 || type == UserConfigurationDictionaryObjectType.StringArray),
                "UserConfigurationDictionary.ConstructObject",
                "value is array but type is not StringArray");

            object dictionaryObject = null;

            switch (type)
            {
            case UserConfigurationDictionaryObjectType.Boolean:
                dictionaryObject = bool.Parse(value[0]);
                break;

            case UserConfigurationDictionaryObjectType.Byte:
                dictionaryObject = byte.Parse(value[0]);
                break;

            case UserConfigurationDictionaryObjectType.ByteArray:
                dictionaryObject = Convert.FromBase64String(value[0]);
                break;

            case UserConfigurationDictionaryObjectType.DateTime:
                DateTime?dateTime = service.ConvertUniversalDateTimeStringToLocalDateTime(value[0]);

                if (dateTime.HasValue)
                {
                    dictionaryObject = dateTime.Value;
                }
                else
                {
                    EwsUtilities.Assert(
                        false,
                        "UserConfigurationDictionary.ConstructObject",
                        "DateTime is null");
                }

                break;

            case UserConfigurationDictionaryObjectType.Integer32:
                dictionaryObject = int.Parse(value[0]);
                break;

            case UserConfigurationDictionaryObjectType.Integer64:
                dictionaryObject = long.Parse(value[0]);
                break;

            case UserConfigurationDictionaryObjectType.String:
                dictionaryObject = value[0];
                break;

            case UserConfigurationDictionaryObjectType.StringArray:
                dictionaryObject = value.ToArray();
                break;

            case UserConfigurationDictionaryObjectType.UnsignedInteger32:
                dictionaryObject = uint.Parse(value[0]);
                break;

            case UserConfigurationDictionaryObjectType.UnsignedInteger64:
                dictionaryObject = ulong.Parse(value[0]);
                break;

            default:
                EwsUtilities.Assert(
                    false,
                    "UserConfigurationDictionary.ConstructObject",
                    "Type not recognized: " + type.ToString());
                break;
            }

            return(dictionaryObject);
        }
 /// <summary>
 /// Writes a dictionary entry type to Xml.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="dictionaryObjectType">Type to write.</param>
 private void WriteEntryTypeToXml(EwsServiceXmlWriter writer, UserConfigurationDictionaryObjectType dictionaryObjectType)
 {
     writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.Type);
     writer.WriteValue(dictionaryObjectType.ToString(), XmlElementNames.Type);
     writer.WriteEndElement();
 }
Beispiel #5
0
 /// <summary>
 /// Writes a dictionary entry type to Xml.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="dictionaryObjectType">Type to write.</param>
 private void WriteEntryTypeToXml(EwsServiceXmlWriter writer, UserConfigurationDictionaryObjectType dictionaryObjectType)
 {
     writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.Type);
     writer.WriteValue(dictionaryObjectType.ToString(), XmlElementNames.Type);
     writer.WriteEndElement();
 }