0

エラー報告中にクラッシュ データを収集するのに役立つ拡張メソッドを作成しました。このメソッドは、キーが常に一意であることを保証するように設計されています。try/catch ブロックがいくつかある場合、データが重複することがあります。ここでは、超ベスト プラクティスではなく、かなり簡単に説明します。

問題: 一意でない場合にキーを変更する。以下の方法を試すと、「'string' から 'TKey' に変換できません」というメッセージが表示されます。何か案は?

    public static void AddUnique<TKey, TValue>(this System.Collections.IDictionary dictionary, TKey key, TValue value)
    {
        if(dictionary[key] != null)
        {
            var newKey = key.ToString() + "-";
            AddUnique<TKey, TValue>(dictionary, newKey, value);
        }               

        ...
    }
4

2 に答える 2

2

キーが常に文字列であることがわかっている場合はTKey、メソッド シグネチャからジェネリック パラメータを削除し、代わりに使用stringします。または、両方のジェネリック パラメータを保持し、再帰呼び出しを に変更することもできますAddUnique<string, TValue>()

于 2012-06-25T17:49:19.730 に答える
0

可能なすべてのキーに文字列を連結することはできません。この問題を解決する必要があります。

  • 文字列のみをキーとして使用する
  • URL やGUIDなど、常に一意のものを使用してください*

それは本当にユニークではありませんが、特に単一のマシンでは、衝突の確率はほぼ 0 です。件名の詳細情報

于 2012-06-25T17:51:08.843 に答える