/// <summary>設定プロパティの現在の値を格納します。</summary> /// <param name="path">保存先のパス。省略した場合は Load メソッドで読み込んだファイルのパスを使用します。</param> /// <param name="serializer">シリアライズの機能を提供するクラス。省略した場合は Load メソッドで使用したクラスを使用します。</param> /// <returns>成功した場合は true、キャンセルした場合は false。</returns> public virtual bool Save(string path = null, IPortableSettingsSerializer <T> serializer = null) { if (IsSynchronized) { lock (this) { return(SaveCore(path, serializer)); } } else { return(SaveCore(path, serializer)); } }
/// <summary>設定プロパティの現在の値を格納します。</summary> /// <param name="path">保存先のパス。</param> /// <param name="serializer">シリアライズの機能を提供するクラス。</param> /// <returns>成功した場合は true、キャンセルした場合は false。</returns> private bool SaveCore(string path, IPortableSettingsSerializer <T> serializer) { var args = new CancelEventArgs(); OnSaving(args); if (args.Cancel) { return(false); } path = path ?? _loadedFilePath; serializer = serializer ?? _serializer; serializer.Serialize(path, this as T); GetProperties().Select(a => a.Value.IsDirty = false); return(true); }
/// <summary>指定の設定ファイルからデシリアライズしてインスタンスを取得します。</summary> /// <param name="path">設定ファイルのパス。省略した場合は PortableSettingsPathAttribute の既定値を使用します。</param> /// <param name="serializer">デシリアライズに使用するクラス。省略した場合は PortableSettingsXmlSerializer を使用します。</param> /// <returns>デシリアライズしたインスタンス。</returns> protected static T Load(string path = null, IPortableSettingsSerializer <T> serializer = null) { path = path ?? GetSettingsFilePath(); serializer = serializer ?? new PortableSettingsXmlSerializer <T>(); T self = serializer.Desilialize(path); if (self == null) { self = Activator.CreateInstance(typeof(T), true) as T; } self._loadedFilePath = path; self._serializer = serializer; self.OnLoaded(EventArgs.Empty); self._isLoaded = true; return(self); }