Esempio n. 1
0
        /// <summary>
        /// Converts a <see cref="T:Tridion.ContentDelivery.Meta.CustomMeta" /> to a <see cref="T:TcmCDService.Contracts.CustomMeta" /> data contract.
        /// </summary>
        /// <param name="customMeta"><see cref="T:Tridion.ContentDelivery.Meta.CustomMeta" /></param>
        /// <returns><see cref="I:System.Collections.Generic.IEnumerable{TcmCDService.Contracts.CustomMeta}" /></returns>
        internal static IEnumerable <Contracts.CustomMeta> ToContract(this CustomMeta customMeta)
        {
            if (customMeta != null)
            {
                List <Contracts.CustomMeta> result = new List <Contracts.CustomMeta>();

                foreach (NameValuePair metaValue in customMeta.NameValues.Values)
                {
                    try
                    {
                        Contracts.CustomMeta contract = new Contracts.CustomMeta()
                        {
                            Name     = metaValue.Name,
                            DataType = (Contracts.CustomMetaType)metaValue.ValueType
                        };

                        switch (metaValue.ValueType)
                        {
                        case (int)Contracts.CustomMetaType.String:
                            contract.StringValues = metaValue.MultipleValues.Cast <String>();
                            break;

                        case (int)Contracts.CustomMetaType.Date:
                            contract.DateTimeValues = metaValue.MultipleValues.Cast <DateTime>().Select(d => DateTime.SpecifyKind(d, DateTimeKind.Unspecified));
                            break;

                        case (int)Contracts.CustomMetaType.Float:
                            contract.FloatValues = metaValue.MultipleValues.Cast <float>();
                            break;
                        }

                        result.Add(contract);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error("CustomMeta: Error parsing value {0}.", ex, metaValue.Name);
                    }
                }

                return(result);
            }

            return(null);
        }
        /// <summary>
        /// Converts a <see cref="T:Tridion.ContentDelivery.Meta.CustomMeta" /> to a <see cref="T:TcmCDService.Contracts.CustomMeta" /> data contract.
        /// </summary>
        /// <param name="customMeta"><see cref="T:Tridion.ContentDelivery.Meta.CustomMeta" /></param>
        /// <returns><see cref="I:System.Collections.Generic.IEnumerable{TcmCDService.Contracts.CustomMeta}" /></returns>
        internal static IEnumerable<Contracts.CustomMeta> ToContract(this CustomMeta customMeta)
        {
            if (customMeta != null)
            {
                List<Contracts.CustomMeta> result = new List<Contracts.CustomMeta>();

                foreach (NameValuePair metaValue in customMeta.NameValues.Values)
                {
                    try
                    {
                        Contracts.CustomMeta contract = new Contracts.CustomMeta()
                        {
                            Name = metaValue.Name,
                            DataType = (Contracts.CustomMetaType)metaValue.ValueType
                        };

                        switch (metaValue.ValueType)
                        {
                            case (int)Contracts.CustomMetaType.String:
                                contract.StringValues = metaValue.MultipleValues.Cast<String>();
                                break;
                            case (int)Contracts.CustomMetaType.Date:
                                contract.DateTimeValues = metaValue.MultipleValues.Cast<DateTime>().Select(d => DateTime.SpecifyKind(d, DateTimeKind.Unspecified));
                                break;
                            case (int)Contracts.CustomMetaType.Float:
                                contract.FloatValues = metaValue.MultipleValues.Cast<float>();
                                break;
                        }

                        result.Add(contract);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error("CustomMeta: Error parsing value {0}.", ex, metaValue.Name);
                    }
                }

                return result;
            }

            return null;
        }