Exemple #1
0
        private bool SetMember(string name, dynamic value)
        {
            DataValue   v    = GetNodeNoThrow(name) as DataValue;
            DataNode    n    = value as DataNode;
            IDictionary dict = value as IDictionary;
            IList       list = value as IList;

            if ((dict == null) && (list != null) && !(value is byte[]))
            {
                dict = ListToDictionary("Item", list);
            }

            if (dict != null)
            {
                DataKey key = new DataKey(name);

                key.PopulateFromDictionary(dict);

                n = key;
            }

            if (v != null)
            {
                if (n != null)
                {
                    v.ReplaceNode(n);
                    n.Name = name;
                }
                else
                {
                    v.Value = value;
                }
            }
            else
            {
                if (n != null)
                {
                    n.Name = name;
                    AddSubNode(n);
                }
                else
                {
                    dynamic key = this;

                    key.AddValue(name, value);
                }
            }

            return(true);
        }
Exemple #2
0
        private bool SetMember(string name, dynamic value)
        {
            DataValue v = GetNodeNoThrow(name) as DataValue;
            DataNode n = value as DataNode;
            IDictionary dict = value as IDictionary;
            IList list = value as IList;

            if ((dict == null) && (list != null) && !(value is byte[]))
            {
                dict = ListToDictionary("Item", list);
            }

            if (dict != null)
            {
                DataKey key = new DataKey(name);

                key.PopulateFromDictionary(dict);

                n = key;
            }

            if (v != null)
            {
                if (n != null)
                {
                    v.ReplaceNode(n);
                    n.Name = name;
                }
                else
                {
                    v.Value = value;
                }
            }
            else
            {
                if (n != null)
                {
                    n.Name = name;
                    AddSubNode(n);
                }
                else
                {
                    dynamic key = this;

                    key.AddValue(name, value);
                }
            }

            return true;
        }