Я написал метод расширения, помогающий собирать данные о сбоях во время отчетов об ошибках. Этот метод разработан, чтобы гарантировать, что ключ всегда уникален. Если у вас есть несколько блоков try/catch, иногда данные могут дублироваться. Я собираюсь здесь достаточно легко, а не супер-лучшие практики.Обеспечение уникальных ключей в Exception.Data IDictionary
Проблема: изменение ключа, если оно не уникально. Когда я пытаюсь использовать метод ниже, я получаю «невозможно преобразовать из« 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);
}
...
}
Отличная идея. Это кажется таким очевидным. Могу ли я иметь такой метод, как AddUniqueInner (словарь System.Collections.IDictionary, строковый ключ, значение объекта)? Это спасло бы TValue, верно? –
Поскольку строки являются, пожалуй, лучшей идеей для ключей, я бы просто сделал подпись 'AddUnique (этот IDictionary dict, строковый ключ, значение TValue)' –
dlev
Это убивает метод расширения, правда, не так ли? Это не соответствует подписи Exception.Data.Add. –