私は現在、列挙型を処理するためのジェネリックメソッドを持つ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
?他に何か?
私はと思い、むしろそれが明確に行うには正しいことだがない限り、このために私自身の例外を作成していません。