I think the compile time force for a little enum enforcement would look something like this... (excuse the bad syntax, doing it from memory)
private T GetPreviousEnum<T>(this T currentlySelectedEnum) where T: struct
StackOverflow has a good question and answer in relation to it here.[^].
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)