4

ASP.NET

使用するappSettingごとに、指定したキーがappSettingsに見つからない場合に返される値を指定したいと思います。これを管理するクラスを作成しようとしていましたが、この機能はおそらくすでに.NET Frameworkのどこかにあると思いますか?

.NETにNameValueCollection/Hash / etc-typeクラスがあり、キーとフォールバック/デフォルト値を指定して、キーの値または指定された値を返すことができますか?

ある場合は、(さまざまな場所から)呼び出す前に、appSettingsをそのタイプのオブジェクトに入れることができます。

4

5 に答える 5

2

あなたが探している機能を提供するものが .NET に組み込まれているとは思えません。

デフォルト値の追加の引数を使用しDictionary<TKey, TValue>てオーバーロードを提供するに基づいてクラスを作成できます。たとえば、次のようになります。TryGetValue

public class MyAppSettings<TKey, TValue> : Dictionary<TKey, TValue>
{
    public void TryGetValue(TKey key, out TValue value, TValue defaultValue)
    {
        if (!this.TryGetValue(key, out value))
        {
            value = defaultValue;
        }
    }
}

おそらくstring、ジェネリックを維持する代わりに s を使用して回避できます。

オプションであれば、Silverlight および WPF の世界のDependencyObjectもあります。

もちろん、最も簡単な方法は、次のようなものですNameValueCollection

string value = string.IsNullOrEmpty(appSettings[key]) 
    ? defaultValue 
    : appSettings[key];

keynull文字列インデクサーにある可能性があります。しかし、それを複数の場所で行うのは面倒だと理解しています。

于 2010-09-21T19:30:05.853 に答える
1

カスタム構成セクションを作成し、DefaultValue 属性を使用してデフォルト値を提供できます。そのための手順は、こちらから入手できます。

于 2010-09-21T18:11:30.633 に答える
0

C:\%WIN%\Microsoft.NETの下のmachine.configがこれを行うと思います。そのファイルにデフォルト値としてキーを追加します。

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

于 2010-09-21T18:03:00.403 に答える