Я не верю, что в .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 вместо общего.
Там также DependencyObject мир Silverlight и WPF, если таковые имеются.
Конечно, самый простой способ - это что-то вроде этого с NameValueCollection
:
string value = string.IsNullOrEmpty(appSettings[key])
? defaultValue
: appSettings[key];
key
может быть null
наиндексатор строкНо я понимаю, это больно делать это в разных местах.