internal override T Deserialize(ISettingSerializer serializer) { T result = base.Deserialize(serializer); this.MarkDirtyableAsClean(); return(result); }
/// <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(); } } } }
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); } }
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); }
internal override void Serialize(ISettingSerializer serializer) { base.Serialize(serializer); this.MarkDirtyableAsClean(); }
internal override TEnum Deserialize(ISettingSerializer serializer) { long persistedValue = serializer.Deserialize(this, CastTo <long> .From <TEnum>(DefaultValue)); return(CastTo <TEnum> .From <long>(persistedValue)); }
internal override void Serialize(ISettingSerializer serializer) { serializer.Serialize(this, CastTo <long> .From <TEnum>(this.Value)); }
public virtual string Serialize(ISettingSerializer serializer) { return(serializer.Serialize(GetProps())); }
internal virtual T Deserialize(ISettingSerializer serializer) { return(serializer.Deserialize <T>(this, this.DefaultValue)); }
internal virtual void Serialize(ISettingSerializer serializer) { serializer.Serialize <T>(this, this.Value); }
/// <inheritdoc/> void ISetting.Serialize(ISettingSerializer serializer) { this._dirty = false; this.Serialize(serializer); }