Pregunta

Tengo el indexador y quiero verificar si no es nulo, y si es luego lanzar argumento de lacepción, pero Gendarme establece la advertencia

InstantiateArgumentExceptionCorrectlyRule: Este método lanza las excepciones de ArgumentException (o Derived) sin especificar un nombre de parámetro existente. Esto puede ocultar información útil a los desarrolladores. FIJA los parámetros de excepción para usar el nombre de parámetro correcto (o asegúrese de que los parámetros estén en el orden correcto).

public override LocalizedString this[string key]
{
    get
    {
        if (key == null)
        {
            throw new ArgumentNullException("key");
        }
        return base[key];
    }
    set
    {
        if (key == null || value == null)
        {
            throw new ArgumentNullException("key");
        }
        base[key] = value;
    }
}

¿Cómo puedo arreglar a mi indexador?

¿Fue útil?

Solución

Bueno, definitivamente no está bien en este momento. Mira este:

if (key == null || value == null)
{
    throw new ArgumentNullException("key");
}

Eso significa que lanzará una excepción que afirmar que "clave" es nula cuando en realidad debería ser "valor".

Entonces el código debería verse así:

if (key == null)
{
    throw new ArgumentNullException("key");
}
if (value == null)
{
    throw new ArgumentNullException("value");
}

No sé si eso solucionará la advertencia o no, pero sería el código correcto.

Este informe de error sugiere que este es un error en Gendarme que no se ha solucionado. Si puede deshabilitar explícitamente la advertencia solo para ese indexador, esa es probablemente la mejor manera de hacerlo. (No he usado Gendarme, así que no sé si eso es factible o no, pero vale la pena investigarlo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top