2

キーと値のペアを app.config ファイルに保存できる構成セクションを作成する必要があります。キーと値のペアは、タイプに関係なく実行時に追加できます。値が元の型を保持することも重要です。次のインターフェースを拡張する必要があります

public interface IPreferencesBackend
{
    bool TryGet<T>(string key, out T value);
    bool TrySet<T>(string key, T value); 
}

実行時には、次のように言えます。

My.Foo.Data data = new My.Foo.Data("blabla");
Pref pref = new Preferences();
pref.TrySet("foo.data", data); 
pref.Save();

My.Foo.Data date = new My.Foo.Data();
pref.TryGet("foo.data", out data);

System.Configuration.Configuration.AppSettings を試してみましたが、キーと値のペアを文字列配列に格納しているという問題があります。

必要なのは、System.Configuration.ConfigurationSection を実装することです。ここで、個々の設定をシリアル化する方法を制御できます。Visual Studio によって生成された設定がこれを行うことに気付きました。リフレクションを使用してすべての設定キーを作成しています。私が必要とするのは、このランタイムを動的に実行することです。

[System.Configuration.UserScopedSettingAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Configuration.DefaultSettingValueAttribute("2008-09-24")]
public global::System.DateTime DateTime {
   get {
        return ((global::System.DateTime)(this["DateTime"]));
       }
   set {
        this["DateTime"] = value;
       }
 }
4

3 に答える 3

2

codeproject.comで、これらの問題を詳細に説明している2つのすばらしい記事を見つけました。

.NET2.0構成の謎を解き明かす http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx

適用されたユーザー設定 http://www.codeproject.com/KB/dotnet/user_settings.aspx?display=PrintAll&fid=1286606&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2647446&fr=26

于 2008-09-28T06:11:28.493 に答える
2

Phil Haack には、カスタム構成セクションの作成に関するすばらしい記事があります。

于 2008-09-24T04:56:34.427 に答える
1

ASCII テキスト ファイルで得られるのは文字列だけです。:-)

ただし、「値」文字列をエンコードして、次のような型パラメーターを含めることができます。

<key="myParam" value="type, value" />

例えば:

<key="payRate" value="money,85.79"/>

次に、アプリに変換を行わせます...

于 2008-09-24T04:59:55.870 に答える