Exemplo n.º 1
0
        public void Add(string name, string value)
        {
            if (this != _null)
            {
                var isType = name.EndsWith(TypeExtension.ValueName.TypePostfix);

                if (isType)
                {
                    var type      = Type.GetType(value, true);
                    var valueName = name.Substring(0, name.Length - TypeExtension.ValueName.TypePostfix.Length);

                    Add(name, type);

                    object val;

                    TryGetValue(valueName, out val);

                    if (val != null && val.GetType() != type)
                    {
                        base[valueName] = val = TypeExtension.ChangeType(val.ToString(), type);

                        if (valueName == TypeExtension.ValueName.Value)
                        {
                            _value = val;
                        }
                    }
                }
                else
                {
                    object val;

                    var type = TryGetValue(name + TypeExtension.ValueName.TypePostfix, out val) ? (Type)val : null;

                    val = value;

                    if (type != null && type != _value.GetType())
                    {
                        val = TypeExtension.ChangeType(value, type);
                    }

                    if (ContainsKey(name))
                    {
                        base[name] = val;
                    }
                    else
                    {
                        Add(name, val);
                    }

                    if (name == TypeExtension.ValueName.Value)
                    {
                        _value = val;
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void Add(string name, string value)
        {
            if (this != _null)
            {
                bool isType = name.EndsWith(TypeExtension.ValueName.TypePostfix);

                if (isType)
                {
                    Type   type      = Type.GetType(value, true);
                    string valueName =
                        name.Substring(0, name.Length - TypeExtension.ValueName.TypePostfix.Length);

                    _values[name] = type;

                    object val = _values[valueName];

                    if (val != null && val.GetType() != type)
                    {
                        _values[valueName] = val = TypeExtension.ChangeType(val.ToString(), type);

                        if (valueName == TypeExtension.ValueName.Value)
                        {
                            _value = val;
                        }
                    }
                }
                else
                {
                    Type   type = (Type)_values[name + TypeExtension.ValueName.TypePostfix];
                    object val  = value;

                    if (type != null && type != _value.GetType())
                    {
                        val = TypeExtension.ChangeType(value, type);
                    }

                    _values[name] = val;

                    if (name == TypeExtension.ValueName.Value)
                    {
                        _value = val;
                    }
                }
            }
        }