/// <summary> /// ユーザコンフィグのデータをシリアライズ化を行いXMLファイル形式で書き込む /// </summary> /// <param name="writer"> /// 書き込み用の <see cref="TextWriter"/> ストリーム /// </param> /// <param name="xmlData"> /// 書き込むユーザコンフィグのデータ /// </param> private static void SerializeWrite(TextWriter writer, ConfigXmlRoot xmlData) { // シリアル化して書き込む XmlSerializer serializer = new XmlSerializer(typeof(ConfigXmlRoot)); serializer.Serialize(writer, xmlData); }
/// <summary> /// ユーザコンフィグを読み込む /// </summary> public void Load() { // ユーザーコンフィグのファイル名を取得 string userConfigFileName = FileName; // ユーザコンフィグの存在チェック if (!File.Exists(userConfigFileName)) { // 新規作成のパターン // ユーザコンフィグが存在しない場合、初期値(空のユーザコンフィグデータ)を設定 XmlData = new ConfigXmlRoot(); return; } // 同時実行でファイルIOのエラーを防ぐため排他制御を行う lock (LockFileWriteObject) { // ユーザコンフィグを逆シリアル化して読み込む TextReader reader; using (reader = new StreamReader(userConfigFileName, new UTF8Encoding(false))) { // (事前に File.Exists で存在チェックを行っているため // TextReader の生成では例外は発生しない) XmlData = DeserializeRead(reader); } } }
/// <summary> /// コンストラクタ /// 引数のユーザコンフィグ(XML形式)で、初期化を行う /// </summary> /// <param name="userConfigXmlData">ユーザコンフィグのXML形式のデータ</param> public UserConfig(ConfigXmlRoot userConfigXmlData) { XmlData = userConfigXmlData; }