コードにかなりの数のディクショナリバインディングがあります。それらのほとんどは見つからず、FallBackValueを使用します。
これはすべてユーザーにとって素晴らしい機能です。
ただし、デバッガーで実行すると、これらのエラーがすべて出力ウィンドウに表示されるまでに非常に長い時間がかかります。
この質問をしたところ、 WPFディクショナリのバインドの失敗は非常に遅く、DependencyProperty.UnsetValueを返す必要があると言われました。
私はそれを試しました、そしてそれはコンパイルします。しかし、それを実行すると、例外が発生します。
DependencyProperty.UnsetValueも返すことができるディクショナリを定義する方法はありますか? (または、より速く失敗する他の方法。)
更新:これが私が試した反復です:
public class NullTolerantDictionary<TKey, TValue>
: Dictionary<TKey, TValue> where TValue : class
{
public new TValue this[TKey key]
{
get
{
TValue value;
bool success = TryGetValue(key, out value);
if (success)
return value;
var errorResult = DependencyProperty.UnsetValue as TValue;
if (errorResult != null)
return errorResult;
return default(TValue);
}
}
}