You are writing C# like it's F#. In F# you can write union types that are also structs:
[<Struct>]
type Entry =
| Message
| Term
| Comment
And like in Rust, you have pattern matching on them: let computeFooForEntry entry =
match entry with
| Message -> 0
| Term -> 1
| Comment -> 2