En Visual Studio 2019, tratando de usar algunas características más nuevas de C#, específicamente características más nuevas de la declaración de cambio.
Quiero cambiar el tipo de un objeto, y he visto algunas formas de lograrlo, estoy usando este enfoque:
private string MyFunc (Employee q) .... Type qt = q.GetType(); switch (qt) { case Type _ when qt == typeof(HumanResources): //some code break; case Type _ when qt == typeof(Sales): //some code break; ..... default: break; }; ..... }Cambié los nombres de las clases y, obviamente, no muestro todo el código. Sin embargo, el tipo de caso tiene las líneas onduladas con la siguiente sugerencia/comentario:
Me gustaría implementar la sugerencia, pero no puedo averiguar cómo. Cualquier ayuda será apreciada, gracias.
No experimento esa advertencia/error/sugerencia en VS2022.
Dicho esto, me gustaría sugerirle que, en su lugar, use la declaración de switch manera más adecuada:
private string MyFunc(Employee q) { switch (q) { case HumanResources: //some code break; case Sales: //some code break; default: break; }; return null; } Entonces, en lugar de operar contra los metadatos de Type , está operando contra las instancias mismas. Esto prescinde de cualquier necesidad del operador when y el código me parece mucho más legible.
No active el tipo de variable, active la variable en sí y use la coincidencia de patrones para seleccionar el caso correcto según el tipo.
private string MyFunc (Employee q) { switch (q) { case HumanResources hr: // some code break; case Sales s: // some code break; // ... } // ... } No necesita agregar un nombre de variable ( hr , s ) en el caso, está ahí en caso de que necesite acceder a la variable como ese tipo en particular.