Учитывая, что перечисления являются конвертируемыми, вы можете ограничить IConvertible
на T
:
public bool HasAccess<T>(T permissionBitMask, long operation) where T: IConvertible
{
long bitmask = permissionBitMask.ToInt64(null);
return (bitmask & operation) == operation;
}
И если вы можете использовать C # 7.3, то также можно ограничить System.Enum
.