Это не приводит к потере данных, так в чем же причина явного преобразования перечислений в целые?
Разве не было бы более интуитивно понятным, если бы это было неявно, скажем, когда у вас есть метод более высокого уровня например:
PerformOperation ( OperationType.Silent type )
где PerformOperation
вызывает обернутый метод C ++, который отображается как таковой:
_unmanaged_perform_operation ( int operation_type )