Ejemplo n.º 1
0
        public DictionaryParameters ConvertFromJson(string json)
        {
            Contract.Requires(!string.IsNullOrWhiteSpace(json));
            Contract.Ensures(null != Contract.Result <DictionaryParameters>());

            Contract.Assert(MAX_RECURSION_COUNT >= recursionCount);
            recursionCount++;

            var result = new DictionaryParameters();

            var dictionary = JsonConvert.DeserializeObject <Dictionary <string, object> >(json);

            foreach (var dictionaryitem in dictionary)
            {
                if (null == dictionaryitem.Value)
                {
                    result.Add(dictionaryitem.Key, default(object));
                }
                else if (dictionaryitem.Value is JArray)
                {
                    var jarrValue = dictionaryitem.Value.ToString();
                    var jarr      = JArray.Parse(jarrValue);
                    var list      = new List <object>();
                    var jlist     = jarr.ToList <object>();
                    foreach (var listitem in jlist)
                    {
                        if (null == listitem)
                        {
                            list.Add(default(object));
                        }
                        else if (listitem is JArray)
                        {
                        }
                        else if (listitem is JObject)
                        {
                            list.Add(ConvertFromJson(listitem.ToString()));
                        }
                        else
                        {
                            list.Add(listitem.ToString());
                        }
                    }

                    result.Add(dictionaryitem.Key, list);
                }
                else if (dictionaryitem.Value is JObject)
                {
                    var jobj = ConvertFromJson(dictionaryitem.Value.ToString());
                    result.Add(dictionaryitem.Key, jobj);
                }
                else
                {
                    result.Add(dictionaryitem.Key, dictionaryitem.Value);
                }
            }

            recursionCount--;

            return(result);
        }
Ejemplo n.º 2
0
        public virtual DictionaryParameters Add(DictionaryParameters objectToMerge, bool replaceExistingKeys)
        {
            Contract.Requires(null != objectToMerge);
            Contract.Ensures(this == Contract.Result <DictionaryParameters>());

            if (replaceExistingKeys)
            {
                foreach (var key in objectToMerge.Keys)
                {
                    if (!ContainsKey(key))
                    {
                        continue;
                    }
                    var keyHasBeenRemoved = Remove(key);
                    Contract.Assert(keyHasBeenRemoved);
                }
            }
            else
            {
                foreach (var key in Keys)
                {
                    if (!objectToMerge.ContainsKey(key))
                    {
                        continue;
                    }
                    var keyHasBeenRemoved = objectToMerge.Remove(key);
                    Contract.Assert(keyHasBeenRemoved);
                }
            }

            var result = Add(objectToMerge);

            return(result);
        }
Ejemplo n.º 3
0
        public virtual bool CanAdd(DictionaryParameters objectToMerge)
        {
            Contract.Requires(null != objectToMerge);

            var result = this.Keys.Intersect <string>(objectToMerge.Keys).FirstOrDefault();

            return(null == result);
        }
Ejemplo n.º 4
0
        public virtual DictionaryParameters Add(DictionaryParameters objectToMerge)
        {
            Contract.Requires(null != objectToMerge);
            Contract.Ensures(this == Contract.Result <DictionaryParameters>());

            var result = this;

            objectToMerge.ToList().ForEach(p => result.Add(p.Key, p.Value));

            return(result);
        }