Я хочу сделать примерно следующее: у меня есть перечисления с комбинированными помеченными значениями.
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;
}
}
Итак, я мог сделать:
MyEnum tester = MyEnum.FlagA | MyEnum.FlagB
if( tester.IsSet( MyEnum.FlagA ) )
//act on flag a
К сожалению, общий язык C #, в котором ограничения не имеют ограничений перечисления, только class и struct. C # не видит перечисления как структуры (хотя они являются типами значений), поэтому я не могу добавлять такие типы расширений.
Кто-нибудь знает обходной путь?