Enum limitations

Well yeah, that’s the point. They are 2 different concepts with different limitations. Both of your examples can be explained with one simple fact. Each value of a enum is of the same type, therefor they all have the same methods and properties. Also you can not declare a value of type X.A as that would be the same as saying I want this argument to have the type 5. For what you are describing you want to use sealed classes as you pointed out.