Альтернатива C # sizeof (enum)? (для обхода ошибки resharper false)?

В C # у меня есть некоторый "безопасный" код API, связанный с повышением прав UAC. Он включает в себя получение размера перечисления (как показано ниже)

int myEnumSize = sizeof (MyEnum);

Сам код действителен, компилируется, работает правильно и т. Д. Но Resharper ошибочно отмечает его как ошибку («Невозможно использовать небезопасную конструкцию в безопасном контексте») в решении . ( Начиная с версии 2.0 C #, применение sizeof к встроенным типам больше не требует использования небезопасного режима. ) Мне нравится Resharper, и мне нравится анализ решения, но с этим кодом в решении я в углу есть большая красная точка, которая заставляет меня всегда думать, что что-то сломалось. Если я скажу resharper игнорировать эту ошибку, она вернется в течение нескольких минут.

Я бы поднял вопрос с JetBrains, но я посмотрел на их трекер, и они уже зарегистрировали один журнал, который игнорируется с марта. Если заглянуть дальше, у них есть по крайней мере два других случая, зарегистрированных несколько лет назад, и оба были отклонены со статусом "не повторять". Я не хочу подписываться на их трекер только для того, чтобы проголосовать за эту ошибку. Я все еще мог задерживать дыхание годами. Самый быстрый путь вперед - это просто обойти проблему.

Какая лучшая альтернатива, которая все еще верна и имеет наименьший шанс вызвать у сопровождающего какие-либо проблемы в дальнейшем?

Я мог бы жестко закодировать ее так:

int myEnumSize = 4;  

Есть более правильное решение? - который не использует sizeof (enum)?

Кстати:

 Marshal.SizeOf() 

полностью "безопасен", но возвращает неправильный размер.

PS. Код в вопросах сильно зависит от демонстрационного кода UACSelfElvation от Microsoft. Если хотите подробностей. Но я не думаю, что они актуальны.

6
задан DanO 18 November 2010 в 22:44
поделиться