- PR -

XmlSerializerを使用した設定ファイルの作り方

1
投稿者投稿内容
Asoas
ベテラン
会議室デビュー日: 2006/03/10
投稿数: 60
投稿日時: 2009-02-15 14:52
[件名:複数の監視フォルダを制御する方法]
の途中で、質問内容が表題とずれてきたので、新たにスレッドを立てました。

<開発環境>
開発環境:VS2005 言語:C#.net

<概要>
現在、あるフォルダを監視し、そこに入ってくるファイル(pdf,tiff等)をファイル名で判別し、複数の登録されてあるフォルダに転送するツールを開発しています。
監視PGはWindowsサービスで開発し、監視に関する各種設定ツールをWindowsAPPで開発しています。

<課題>
上記概要にあるように「WinサービスApp(AAAService.exe)」と「WinApp(BBB.exe)」の2つのプロジェクトで開発を進めています。しかし、両アプリとも使用する設定ファイルは共有したいと考えています。(Ex.監視先フォルダパス等の設定)
それを「XmlSerializer」を使用して共有設定ファイルを作ろうと考えています。

現在、以下の[BBB.exe内コード]のようにBBB.exe内で"Class"と"xmlファイル"の作成をしています。
しかし、AAA.exe内でxmlファイルを呼び出す際はどのようにしたらよいのでしょうか?
[AAAService.exe内コード]で記載しているように、呼び出すには、BBB.exe内の"Class"を呼び出す必要があり、やはり無理があるのかなと考えています。

良い方法あれば、教えてください。



[BBB.exe内コード]------------------------------------------------------
●Program.cs内にSxml_classを作成
public class Sxml
{
public string watch_folder = @"c:\\\\temp";
}
●form.cs内でXmlSerializerを作成
XmlSerializer serializer = new XmlSerializer(typeof(Sxml));
//ファイルを作る
FileStream fs
 = new FileStream(Application.StartupPath + "\\\\\\\\config.xml", FileMode.Create);
//インスタンスの生成
Sxml scls = new Sxml();
//書き込み
serializer.Serialize(fs, scls);
//ファイルを閉じる
fs.Close();
-----------------------------------------------------------------------

[AAAService.exe内コード]-----------------------------------------------
//ファイルを開く
FileStream fs
= new FileStream(Application.StartupPath + "\\\\\\\\config.xml", FileMode.Open);
//読み込み
Sxml scls = (Sxml)serializer.Deserialize(fs);
//監視フォルダのフルパスを取得
wpath = scls.watch_folder;
//ファイルを閉じる
fs.Close();
-----------------------------------------------------------------------
akira
会議室デビュー日: 2004/06/14
投稿数: 6
投稿日時: 2009-02-15 15:22
こんにちわ

AでもBでもそのクラスを呼び出せるように、ライブラリなどにクラスを埋め込んで、共有すればよいのではないでしょうか。
Asoas
ベテラン
会議室デビュー日: 2006/03/10
投稿数: 60
投稿日時: 2009-02-18 17:40
確かにその通り、ライブラリをひとつ追加すれば良いだけですね。
この方法で、問題なく動作しました。
有難うございました。
1

スキルアップ/キャリアアップ(JOB@IT)