Şu anda UnconstrainedMelody için numaralandırmalarla ilgili genel yöntemler içeren bazı kodlar yazıyorum .
Şimdi, sadece "bayraklar" numaralandırmalarıyla kullanılması amaçlanan bir dizi yöntem içeren statik bir sınıfım var . Bunu bir kısıtlama olarak ekleyemiyorum ... bu yüzden diğer enum türleriyle de çağrılmaları mümkün. Bu durumda bir istisna yapmak isterim ama hangisini atacağımdan emin değilim.
Bunu somutlaştırmak için, eğer böyle bir şeye sahipsem:
// 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
}
Fırlatılacak en iyi istisna nedir? ArgumentException
kulağa mantıklı geliyor, ancak bu, normal bir argüman olmaktan çok, bir şeyleri kolayca karıştırabilecek bir tip argümanı. Kendi TypeArgumentException
sınıfımı tanıtmalı mıyım ? Kullan InvalidOperationException
? NotSupportedException
? Başka herhangi bir şey?
Açıkça yapılacak doğru şey olmadıkça, bunun için kendi istisnamı yaratmamayı tercih ederim .