我编写了一个扩展方法来帮助在错误报告期间收集崩溃数据。此方法旨在确保密钥始终是唯一的。如果您有一些try / catch块,有时数据可能会重复。我在这里相当容易,而不是超级最佳实践。
问题:如果密钥不唯一,请更改密钥。当我尝试下面的方法时,我得到“无法从'字符串'转换为'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);
}
...
}
答案 0 :(得分:2)
如果您知道您的密钥始终是字符串,请从方法签名中删除TKey
泛型参数,并在其位置使用string
。或者,您可能希望保留两个通用参数,但将递归调用更改为AddUnique<string, TValue>()
。
答案 1 :(得分:0)
您无法将字符串连接到每个可能的键。你必须解决这个问题:
它并不是唯一的,但碰撞的概率接近0,特别是在一台机器上。 More info on the subject。