J'aimerais créer une méthode générique pour convertir tout type dérivé de System.Enum en sa valeur entière correspondante, sans casting et de préférence sans analyser une chaîne de caractères.
Par exemple, ce que je veux, c'est quelque chose comme ça :
// Trivial example, not actually what I'm doing.
class Converter
{
int ToInteger(System.Enum anEnum)
{
(int)anEnum;
}
}
Mais cela ne semble pas fonctionner. Resharper signale que vous ne pouvez pas convertir une expression de type 'System.Enum' en type 'int'.
J'ai trouvé cette solution, mais je préférerais avoir quelque chose de plus efficace.
class Converter
{
int ToInteger(System.Enum anEnum)
{
return int.Parse(anEnum.ToString("d"));
}
}
Des suggestions ?
1 votes
Je crois que c'est le compilateur qui se plaint, pas Resharper.
1 votes
Pas nécessairement. J'ai une méthode d'extension sur System.Enum, et de temps en temps Resharper décide de se plaindre : Cannot convert instance argument type 'Some.Cool.Type.That.Is.An.Enum' to 'System.Enum' when it unquestionably IS an enum. Si je compile et exécute le code, il fonctionne parfaitement. Si j'arrête ensuite VS, que j'efface le cache de Resharper et que je le relance, tout va bien une fois qu'il a terminé le rescanning. Pour moi, c'est une sorte de problème de cache. C'est peut-être la même chose pour lui.
0 votes
@Mir j'ai eu ReSharper "se plaindre" sur ce point aussi. Même correction pour moi. Je ne sais pas pourquoi ces types sont mélangés, mais ce n'est certainement pas le compilateur.