C#では、UACの高度に関する「安全な」APIコードがいくつか用意されています。これは、(「安全な文脈で危険な構文を使用できません」というエラーとして(次のように)しかし、ReSharperの虚偽のフラグになど、コード自体は、有効でコンパイルし、正常に動作することをC#sizeof(enum)の代わりに? (虚偽のエラーを再共有するための回避策)?
int myEnumSize = sizeof (MyEnum);
を列挙型のサイズを取得する必要)を解決します。 (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月以降無視されているログを取得しました。彼らはさらに、少なくとも2つの別のインスタンスがログに記録されていることを確認するために、数年後には、 "repro"状態で解雇されました。私は自分のトラッカーにサインアップしてこのバグに投票するだけではいけません。私はまだ何年もの間息を止めてしまうことができます。最速の方法は、問題を回避することです。
メンテナが後で何かトラブルを起こす可能性が最も低い正しい選択肢は何ですか?
私はにハードコードもできます。より正確な解決策がある
int myEnumSize = 4;
ですか? - sizeof(enum)を使わないのですか?ところで
:
Marshal.SizeOf()
は完全に "安全" であるが、間違ったサイズを返します。
PS。質問のコードは、MicrosoftのUACSelfElvationデモコードの影響を大きく受けます。詳細が必要な場合。しかし、私はそれらが適切であるとは思わない。
作業が確認されました。 –
パーフェクト。これはまさに私が探していたものです。それはうまくいきませんが、より簡潔な方法を示し、ここでそれが使われなかった理由を示すコメントがあれば、それはうまくいくでしょう。ありがとうございました。これはまさに私がStackoverflowを尋ねるときに望んでいたものです。 – DanO