0

現在、アドホックxmlファイルを使用して構成設定を保存していますが、機能していますが、必要な場所にありません。

これは次のようになります。

<XmlDoc>

    <DefaultSettings>
        <ExitProgramMessage>Y</ExitProgramMessage>
    <DefaultSettings>

    <Company>
        <ExitProgramMessage>N</ExitProgramMessage>
    <Company>

    <Workstation>
        <ExitProgramMessage>N</ExitProgramMessage>
    </Workstation>

    <User>
        <ExitProgramMessage>Y</ExitProgramMessage>
    <User>

<XmlDoc>

コードの記述方法は、最初にDefaultSettingsが読み取られ、次にCompany(DefaultSettingsを上書きする)、次にWorkstation設定(DefaultSettingsまたはCompany Settingsを上書きする)、次にWorkstations、次にUser...が最後に読み取られるというものです。 、空白を除いて。フィールドをクリアしません。上記の例では、ExitProgramMessageはYになります。

私はいくつかの問題に直面しています。

  1. レベルがハードコーディングされているため、簡単に追加できません
  2. 標準のxml形式ではないため、各ノードを手動で読み取る必要があります。つまり、ファイルを手動で編集する必要があり、常に問題が発生します。

使い方は簡単ではなく、間違いなく直感的ではありません。

それでは、設定を更新するための画面を作成できるように、これをどのように実装する必要がありますか?

xmlは正しい方法ですか?これで別のルートに行くべきですか?データベースのオプションはまだありません。フラットファイルのみです。

また、これらの設定は、ネットワークユーザーがアクセスする共有ドライブを備えたサーバー上にあります。したがって、これらをレジストリに保存した設定や、ユーザーに固有の設定にすることはできません。

任意のアイデアをいただければ幸いです。

ありがとう!

4

2 に答える 2

1

シナリオに対する私の提案は、Settings.Propertiesを調べて、それらに任意のタイプを設定し、実行時に更新できるようにすることです。

Settings.Propertiesを使用した非常に良い例は、アプリケーションの状態をそれらに保存できることです。

詳細については、リンクを参照してください

http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

http://msdn.microsoft.com/en-us/library/bb397755.aspx

于 2012-07-13T16:02:08.283 に答える
0

いくつかのクラスで簡単に処理できます。例:

値を読み取るには:

Settings settings = new Settings(file);
var company = settings["Company"].ExitProgramMessage;

値を書き込むには:

using(Settings settings = new Settings(file))
{
    settings["Workstation"].ExitProgramMessage = "Y";
}

クラスは次のとおりです。

public class Settings : IDisposable
{
    XElement self;
    FileInfo file;
    public Settings(FileInfo file)
    {
        if (file.Exists)
            self = XElement.Load(file.FullName);
        else
            self = new XElement("XmlDoc");
        this.file = file;
    }

    public Setting this[string name]
    {
        get
        {
            XElement x = self.Element(name);
            if (null == x)
                self.Add(x = new XElement(name));
            return new Setting(x, name);
        }
    }

    public void Dispose()
    {
        self.Save(file.FullName);
    }
}

public class Setting
{
    XElement self;
    string name;
    public Setting(XElement xsetting, string name)
    {
        self = xsetting;
        this.name = name;
    }

    public string ExitProgramMessage
    {
        get
        {
            XElement x = self.Element("ExitProgramMessage");
            if (null == x)
                return "Unknown"; // default value?
            return (string)x;
        }
        set
        {
            XElement x = self.Element("ExitProgramMessage");
            if (null == x)
                self.Add(new XElement("ExitProgramMessage", value));
            else
                x.Value = value;
        }
    }

    public string Name { get { return name; } }
}
于 2012-07-13T16:07:08.920 に答える