Todo lo que quiero es un diccionario que me diga qué clave no pudo encontrar, en lugar de simplemente decir The given key was not present in the dictionary
."Diccionario verboso" en C#, 'anular nuevo' esto [] o implementar IDictionary
Consideré brevemente hacer una subclase con override new this[TKey key]
, pero sentí que era un poco hacky, así que me fui con la implementación de la interfaz IDictionary, y pasé todo directamente a un diccionario interior, con la única lógica adicional en el indexador:
public TValue this[TKey key]
{
get
{
ThrowIfKeyNotFound(key);
return _dic[key];
}
set
{
ThrowIfKeyNotFound(key);
_dic[key] = value;
}
}
private void ThrowIfKeyNotFound(TKey key)
{
if(!_dic.ContainsKey(key))
throw new ArgumentOutOfRangeException("Can't find key [" + key + "] in dictionary");
}
¿Es esta la manera correcta/única de hacerlo? ¿Sería tan malo renovar este []?
Estoy tan contento de que los usuarios # 1 y # 2 estén en el lado derecho del planeta :) – Benjol