using System.IO; using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Serialization; namespace TJAPlayer3 { /// /// 設定ファイル入出力クラス。 /// public static class ConfigManager { private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings() { ObjectCreationHandling = ObjectCreationHandling.Auto, DefaultValueHandling = DefaultValueHandling.Include, // ContractResolver = new CamelCasePropertyNamesContractResolver(), NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore, Converters = new StringEnumConverter[] { new StringEnumConverter() } }; /// /// 設定ファイルの読み込みを行います。ファイルが存在しなかった場合、そのクラスの新規インスタンスを返します。 /// /// シリアライズしたクラス。 /// ファイル名。 /// デシリアライズ結果。 public static T GetConfig(string filePath) where T : new() { var json = ""; if (!System.IO.File.Exists(filePath)) { // ファイルが存在しないので SaveConfig(new T(), filePath); } using (var stream = new System.IO.StreamReader(filePath, Encoding.UTF8)) { json = stream.ReadToEnd(); } return JsonConvert.DeserializeObject(json, Settings); } /// /// 設定ファイルの書き込みを行います。 /// /// シリアライズするインスタンス。 /// ファイル名。 public static void SaveConfig(object obj, string filePath) { (new FileInfo(filePath)).Directory.Create(); using (var stream = new System.IO.StreamWriter(filePath, false, Encoding.UTF8)) { stream.Write(JsonConvert.SerializeObject(obj, Formatting.Indented, Settings)); } } } }