Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I see, although it looks like you're really after a state-machine there. Which I admit aren't the easiest to create in C#, and immutability and null-safety definitely make it easier...

Although personally I'd rather have the different states encapsulated in separate classes than a single type that encapsulates all possible states and enforces them through the constructor.



This is what F# does (define multiple classes), but each of these classes only takes one line of code.


Also, it defines them as nested classes, and marks the outer class as `sealed`, as they're closed types, and it prevents the type being extended with new cases.

C# can't do this because the compiler rejects putting `abstract` and `sealed` on the same type.


You can kind of solve this by making the constructor of the outer class private and defining all subtypes as nested types.

It's not ideal, but it works.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: