8

objectのパラメーターを持つ IDictionary インターフェイスを実装していますget set

object this [object key] { get; set; }

キーを文字列型に強制したいので、コードでは次のようにします。

(if key.GetType() != typeof(string)) {
    //
}

これが発生したときに例外をスローしたい。ただし、この場合に使用する最も適切な例外はわかりません。私が見つけることができる最も近いものはTypeInitializationExceptionArgumentExceptionです。ただし、このドキュメントには次のように記載されています。

ケースは何を使えばいいですか?例外をスローする代わりにアサートを使用する必要がありますか?

4

2 に答える 2

3

まず、最善の解決策はマシューのものだと思います。タイプ文字列のジェネリック辞書を使用しないのはなぜですか。

Code Contracts 以外のアプローチを適用する必要がある場合は、それを行うための最良の方法です。

例: Contract.Requires(キーは文字列); この問題には assert は適していませんが、ArgumentException を適用することはできます。

ありがとう

于 2013-08-22T21:09:01.947 に答える