在C#中,我有一些與UAC提升相關的「安全」API代碼。它涉及到得到一個枚舉的大小(如下)C#sizeof(enum)的替代? (解決方法resharper虛假錯誤)?
int myEnumSize = sizeof (MyEnum);
代碼本身是有效的,編譯,正常工作等,但ReSharper的虛假標誌它作爲一個錯誤(「在安全的前提下不能使用不安全的構造」 )在解決方案中。 (Starting with version 2.0 of C#, applying sizeof to built-in types no longer requires that unsafe mode be used.)我喜歡Resharper,我喜歡解決方案分析,但是通過解決方案中的代碼,我在角落裏有一個很大的紅點,這讓我總是覺得有些東西壞了。如果我告訴resharper忽略這個錯誤,它會在幾分鐘內回來。
我會提出JetBrains的問題,但我看着他們的跟蹤器,他們已經有一個自3月以來被忽略的日誌。進一步看,他們至少有兩個這種記錄可以追溯到幾年的其他實例,兩者都以「無複製」狀態被解僱。我不想註冊他們的跟蹤器來投票給這個bug。多年來我仍然可以屏住呼吸。最快的方法就是解決這個問題。
什麼是最好的選擇,仍然是正確的,有最小的機會導致維護人員後來有任何麻煩?
我可以硬編碼它:
int myEnumSize = 4;
的是,有更多的正確的解決方案? - 哪個不使用sizeof(枚舉)?
BTW:
Marshal.SizeOf()
完全是 「安全的」,但返回錯誤的大小。
PS。問題中的代碼深受來自Microsoft的UACSelfElvation演示代碼的影響。如果你想要更多的細節。但我認爲它們不相關。
確認工作。 – 2010-11-18 21:05:58
完美。這正是我所期待的。它的工作原理,即使它不漂亮,評論顯示更簡潔的方式,並指出爲什麼它沒有在這裏使用,這將是偉大的。謝謝。這正是我在問Stackoverflow時所希望的。 – DanO 2010-11-18 21:53:49