コード例 #1
0
        internal override T Deserialize(ISettingSerializer serializer)
        {
            T result = base.Deserialize(serializer);

            this.MarkDirtyableAsClean();
            return(result);
        }
コード例 #2
0
        /// <inheritdoc/>
        void ISetting.Deserialize(ISettingSerializer serializer)
        {
            bool markClean = true;

            // Attempt to deserialize value, but resort to default value if
            // any exceptions are thrown whilst attempting to deserialize.

            T value;

            try {
                value = this.Deserialize(serializer);
            }
            catch (Exception ex) {
                this._group.Manager.LogFeedback(MessageFeedbackType.Error, string.Format("Was unable to read setting '{0}.{1}' so reverting to default value.", this.GroupKey, this.Key), ex);
                value = this.DefaultValue;

                // This change should be saved since input configuration file
                // contains an invalid value and user has been informed that the
                // default value has been restored.
                //
                // Maintaining the original value would allow the user to manually
                // correct the issue; but users who were happy for this setting to
                // be reverted would be re-warned each time they reopen Unity.

                markClean   = false;
                this._dirty = true;
            }

            if (this._filter != null)
            {
                value = this._filter(value);
            }

            this._value = value;

            if (markClean)
            {
                this._dirty = false;

                if (!typeof(T).IsValueType)
                {
                    var dirtyableValue = value as IDirtyableObject;
                    if (dirtyableValue != null)
                    {
                        dirtyableValue.MarkClean();
                    }
                }
            }
        }
コード例 #3
0
        public override AbstractConfigValue GetValue(string config, ISettingSerializer serializer)
        {
            lock (_lk)
            {
                AbstractConfigValue         value = null;
                Dictionary <string, object> tmp   = serializer.Deserialize(config);
                if (_store.ContainsKey((string)tmp["name"]))
                {
                    value = GetValue((string)tmp["name"]);
                }
                else
                {
                    value = base.GetValue(config, serializer);
                    _store.Add((string)tmp["name"], value);
                }

                return(value);
            }
        }
コード例 #4
0
        public virtual AbstractConfigValue GetValue(string config, ISettingSerializer serializer)
        {
            AbstractConfigValue value = null;

            Dictionary <string, object> tmp = serializer.Deserialize(config);

            if (tmp.ContainsKey("ref"))
            {
                return(GetValue((string)tmp["ref"]));
            }

            for (int i = 0; i < tmp.Keys.Count; i++)
            {
                string prop = tmp.Keys.ElementAt(i);
                if (serializer.IsValid((string)tmp[prop]))
                {
                    tmp[prop] = GetValue((string)tmp[prop], serializer);
                }
            }

            Type          type = Type.GetType((string)tmp["type"]);
            List <object> args = new List <object>();

            foreach (ParameterInfo item in type.GetConstructors().First().GetParameters())
            {
                if (tmp.ContainsKey(item.Name))
                {
                    args.Add(tmp[item.Name]);
                }
                else
                {
                    args.Add(null);
                }
            }

            value = (AbstractConfigValue)Activator.CreateInstance(type, args.ToArray());

            return(value);
        }
コード例 #5
0
 internal override void Serialize(ISettingSerializer serializer)
 {
     base.Serialize(serializer);
     this.MarkDirtyableAsClean();
 }
コード例 #6
0
        internal override TEnum Deserialize(ISettingSerializer serializer)
        {
            long persistedValue = serializer.Deserialize(this, CastTo <long> .From <TEnum>(DefaultValue));

            return(CastTo <TEnum> .From <long>(persistedValue));
        }
コード例 #7
0
 internal override void Serialize(ISettingSerializer serializer)
 {
     serializer.Serialize(this, CastTo <long> .From <TEnum>(this.Value));
 }
コード例 #8
0
 public virtual string Serialize(ISettingSerializer serializer)
 {
     return(serializer.Serialize(GetProps()));
 }
コード例 #9
0
 internal virtual T Deserialize(ISettingSerializer serializer)
 {
     return(serializer.Deserialize <T>(this, this.DefaultValue));
 }
コード例 #10
0
 internal virtual void Serialize(ISettingSerializer serializer)
 {
     serializer.Serialize <T>(this, this.Value);
 }
コード例 #11
0
        /// <inheritdoc/>
        void ISetting.Serialize(ISettingSerializer serializer)
        {
            this._dirty = false;

            this.Serialize(serializer);
        }