Yapmak istediğim şey şuna benzer: Birleşik bayraklı değerlere sahip numaralandırmalarım var.
public static class EnumExtension
{
public static bool IsSet<T>( this T input, T matchTo )
where T:enum //the constraint I want that doesn't exist in C#3
{
return (input & matchTo) != 0;
}
}
O zaman yapabilirdim:
MyEnum tester = MyEnum.FlagA | MyEnum.FlagB
if( tester.IsSet( MyEnum.FlagA ) )
//act on flag a
Ne yazık ki, kısıtlamaların numaralandırma kısıtlamasının olmadığı, yalnızca sınıf ve yapı türünün olduğu C # geneldir. C #, numaralandırmaları yapı olarak görmüyor (değer türü olsalar bile) bu yüzden böyle uzantı türleri ekleyemiyorum.
Bir geçici çözüm bilen var mı?