Debido a que este es mi primer intento de un método de extensión que parece bastante útil para mí, sólo quiero para asegurarse de que voy por el camino de la derechaMi primer método de extensión, ¿podría escribirse mejor?
public static bool EqualsAny(this string s, string[] tokens, StringComparison comparisonType)
{
foreach (string token in tokens)
{
if (s.Equals(token, comparisonType))
{
return true;
}
}
return false;
}
Llamado por
if (queryString["secure"].EqualsAny(new string[] {"true","1"}, StringComparison.InvariantCultureIgnoreCase))
{
parameters.Protocol = Protocol.https;
}
EDITAR: Algunas sugerencias excelentes que vienen, exactamente el tipo de cosa que estaba buscando. Gracias
EDIT:
me he decidido por la siguiente implementación
public static bool EqualsAny(this string s, StringComparison comparisonType, params string[] tokens)
{
// for the scenario it is more suitable for the code to continue
if (s == null) return false;
return tokens.Any(x => s.Equals(x, comparisonType));
}
public static bool EqualsAny(this string s, params string[] tokens)
{
return EqualsAny(s, StringComparison.OrdinalIgnoreCase, tokens);
}
he preferido usar params sobre IEnumerable porque simplifica el código de llamada
if (queryString["secure"].EqualsAny("true","1"))
{
parameters.Protocol = Protocol.https;
}
algo muy distinto de el anterior
if (queryString["secure"] != null)
{
if (queryString["secure"] == "true" || queryString["secure"] == "1")
{
parameters.Protocal = Protocal.https;
}
}
¡Gracias de nuevo!
personalmente, creo que usted debe hacer una pregunta preliminar antes de preguntarse sobre la sintaxis del método de extensión: no vas a querer este método. Primero, como otros lo han mencionado, es solo una inversión de tokens. Cualquier(), y en segundo lugar, en su ejemplo de uso, ha tomado un concepto simple de "es este un valor verdadero" que debería haber sido fácil de leer y reemplazar con una expresión compleja que implica un método de extensión personalizado y una matriz sobre la marcha. IMO, estos pequeños bits de complejidad innecesaria se suman. – tnyfst