En C# j'ai un code API "sûr" lié à l'élévation de l'UAC. Il consiste à obtenir la taille d'un ENUM (comme suit)C# sizeof (enum) alternative? (pour contourner fausse erreur de resharper)?
int myEnumSize = sizeof (MyEnum);
Le code lui-même est valide, compile, fonctionne correctement, etc. Mais ReSharper faussement drapeaux il comme une erreur (« ne peut pas utiliser construction dangereux dans le contexte de sécurité ») dans la solution. (Starting with version 2.0 of C#, applying sizeof to built-in types no longer requires that unsafe mode be used.) J'aime Resharper, et j'adore l'analyse de solution, mais avec ce code dans la solution, j'ai un gros point rouge dans le coin qui me fait toujours penser que quelque chose est cassé. Si je dis à resharper d'ignorer cette erreur, il revient en quelques minutes. Je voudrais soulever le problème avec JetBrains, mais j'ai regardé sur leur traqueur et ils ont déjà un journal qui a été ignoré depuis mars. En regardant plus loin, ils ont au moins deux autres cas de ce passé depuis plusieurs années, les deux ont été rejetés avec un statut «sans repro». Je ne veux pas m'inscrire à leur tracker juste pour voter ce bug. Je pourrais encore finir par retenir ma respiration pendant des années. Le moyen le plus rapide est de contourner le problème.
Quelle est la meilleure alternative qui soit toujours correcte et qui a le moins de chance de causer des problèmes à un mainteneur plus tard?
je pourrais coder en dur à:
int myEnumSize = 4;
Est-il y a une solution plus correcte? - qui n'utilise pas sizeof (enum)?
BTW:
Marshal.SizeOf()
est complètement "sûr", mais renvoie la mauvaise taille.
PS. Le code en question est fortement influencé par le code de démonstration UACSelfElvation de Microsoft. Si vous voulez plus de détails. Mais je ne pense pas qu'ils sont pertinents.
Travail confirmé. –
Parfait. Ceci est exactement ce que je cherchais. Cela fonctionne, et même si ce n'est pas joli, avec un commentaire montrant la manière plus concise et indiquant pourquoi il n'a pas été utilisé ici, ce sera génial. Je vous remercie. C'est exactement ce que j'espérais en demandant à Stackoverflow. – DanO