In C# habe ich einen "sicheren" API-Code für die UAC-Erhöhung. Es geht um die Größe eines Enum bekommen (wie folgt)C# sizeof (enum) Alternative? (Um Workaround Nachschärfen falscher Fehler)?
int myEnumSize = sizeof (MyEnum);
Der Code selbst gültig ist, kompiliert, funktioniert einwandfrei etc. Aber ReSharper fälschlicherweise Flaggen es als einen Fehler („nicht unsicher Konstrukt in sicheren Kontext verwenden können“) innerhalb der Lösung. (Starting with version 2.0 of C#, applying sizeof to built-in types no longer requires that unsafe mode be used.) Ich liebe Resharper, und ich liebe die Lösung Analyse, aber mit diesem Code in der Lösung habe ich einen großen roten Punkt in der Ecke, die mich immer denken, dass etwas gebrochen ist. Wenn ich Resharper sage, um diesen Fehler zu ignorieren, kommt er innerhalb von Minuten zurück.
Ich würde das Problem mit JetBrains aufwerfen, aber ich schaute auf ihren Tracker und sie haben bereits einen geloggt, der seit März ignoriert wurde. Wenn man weiter schaut, haben sie mindestens zwei weitere Fälle, die mehrere Jahre zurückliegen, beide wurden mit einem "No-Repro" Status entlassen. Ich möchte mich nicht bei ihrem Tracker anmelden, nur um diesen Bug abzustimmen. Ich könnte immer noch den Atem anhalten für Jahre. Der schnellste Weg nach vorne ist nur, um das Problem zu umgehen.
Was ist die beste Alternative, die immer noch korrekt ist und die geringste Chance hat, dem Betreuer später irgendwelche Probleme zu bereiten?
Ich konnte hart Code es an:
int myEnumSize = 4;
Gibt es mehr richtige Lösung? - die nicht sizeof (enum) verwendet?
Btw:
Marshal.SizeOf()
ist vollständig "sicher", sondern gibt die falsche Größe.
PS. Der Code in Fragen wird stark von dem Democode UACSelfElvation von Microsoft beeinflusst. Wenn Sie mehr Details wünschen. Aber ich denke nicht, dass sie relevant sind.
Bestätigte Arbeit. –
Perfekt. Genau das habe ich gesucht. Es funktioniert, und obwohl es nicht schön ist, mit einem Kommentar, der den knapperen Weg zeigt und anzeigt, warum es hier nicht verwendet wurde, wird es großartig sein. Vielen Dank. Genau das habe ich mir bei Stackoverflow erhofft. – DanO