11
無効なジェネリック型引数の最良の例外
私は現在、列挙型を処理するためのジェネリックメソッドを持つUnconstrainedMelodyのコードを書いています。 これで、「フラグ」列挙型でのみ使用することを目的とした一連のメソッドを持つ静的クラスができました。これを制約として追加することはできません...したがって、他の列挙型でも呼び出される可能性があります。その場合、例外をスローしたいのですが、どれをスローするかわかりません。 これを具体的にするために、私がこのようなものを持っている場合: // Returns a value with all bits set by any values public static T GetBitMask<T>() where T : struct, IEnumConstraint { if (!IsFlags<T>()) // This method doesn't throw { throw new ??? } // Normal work here } スローするのに最適な例外は何ですか?ArgumentException論理的に聞こえますが、これは通常の引数ではなく型引数であり、簡単に混乱する可能性があります。自分のTypeArgumentExceptionクラスを紹介する必要がありますか?使用しInvalidOperationExceptionますか?NotSupportedException?他に何か? 私はと思い、むしろそれが明確に行うには正しいことだがない限り、このために私自身の例外を作成していません。