Vous ne pouvez pas utiliser une instruction switch pour cela, car les valeurs des cas ne peuvent pas être des expressions évaluées. Pour cela, vous devez utiliser une instruction if/else ...
public static void Output<T>(IEnumerable<T> dataSource) where T : class
{
dataSourceName = (typeof(T).Name);
if(string.Compare(dataSourceName, typeof(CustomerDetails).Name.ToString(), true)==0)
{
var t = 123;
}
else if (/*case 2 conditional*/)
{
//blah
}
else
{
//default case
Console.WriteLine("Test");
}
}
J'ai également pris la liberté de mettre de l'ordre dans votre déclaration conditionnelle. Il n'est pas nécessaire de convertir en chaîne de caractères après avoir appelé ToString()
. De toute façon, cela renvoie toujours une chaîne de caractères. Lorsque vous comparez des chaînes de caractères pour vérifier leur égalité, n'oubliez pas que l'utilisation de l'opérateur == entraînera une comparaison sensible à la casse. Il est préférable d'utiliser string compare = 0 avec le dernier argument pour activer ou désactiver la sensibilité à la casse.
0 votes
Duplication possible de C# - Existe-t-il une meilleure alternative que celle-ci pour "switch on type" ?