2011-09-26 19 views
3

Silverlight 4でInvalidEnumArgumentExceptionが廃止されたことに驚きました。なぜSilverlight 4ではInvalidEnumArgumentExceptionが廃止されましたか?

これはなぜですか?私は非常に有用な例外であることを発見しました。特に、バイナリデータをenum値に手動でデシリアライズする場合マイクロソフトで働いていません

[ObsoleteAttribute(
    "InvalidEnumArgumentException is obsolete. Use ArgumentException instead.")] 
public class InvalidEnumArgumentException : Exception 
+0

本当にあり、廃止とマークされていますか?それとも、そこにはないのですか? – UrbanEsc

+0

@UrbanEsc、それはそこにあり、時代遅れです。この点を明確にするために質問を更新しました。 –

答えて

4

あなたは正しいです、それは時代遅れのマークが付けられたのに全く存在している(ここでthe correct link pointing to the Silverlight Version of the classがある)

私は、これは特定の考える質問はここに皆のために答えることは困難である「なぜ」、およびそのような変更を検討するプロセスに関与しています。 Microsoftには、現在のバージョンでは廃止されていることを示す高い理由が説明されているドキュメントがあります。それは今の通りです。私はあなたがそれで生きなければならないかもしれないと恐れています。

私は見つけることができるトピックの最高のヒットだったこのintスレッドは、ここで私はビンビンと少し笑ってグーグル。 Silverlight.netでそれを探しても結果が得られません。だからあなたは金のパートナー契約(またはそれが呼び出されているもの)を必要とし、マイクロソフトの人たちに直接問題に連絡してください。

しかしビットcontroveryがそれを使用したりしないようにその良い習慣天気を、この非常に同じ例外上で起こっているようです、私はinconsistensiesの話、このlinkにコメントを引用したいと思います:

残念ながら、 無効なenum引数がメンバに渡され、代わりに ArgumentExceptionまたはArgumentOutOfRangeExceptionがスローされた場合、InvalidEnumArgumentExceptionが System.dllに定義され、mscorlib.dllではなく、後でthrowされません。この不一致は ですが、通常は問題が発生しません。この例外は、 がスローされたときに、通常は呼び出し元のバグを示し、catch節ではほとんど捕捉されません。

これは、Silverlightから削除することにつながるような状況にもつながっている可能性があります。か否か。とにかく、おそらくあなたはおそらくArgumentExceptionsをキャッチしているので、ほとんどの実装者はそれをさらに分解することによって何も得られないので、おそらくその理由は、彼らが不要なオーバーヘッドを考えたからです。そのちょっと推測ですが、私はあなたがこれよりも良くなることはないと恐れています(他のランダムな推測に加えて)。

あなたが望むのであれば、独自のInvalidEnumArgumentExceptionの実装を追加することができます。すでに行っていると思います。

関連する問題