I have a named enum that I'd like to keep named, that I'd like to use as a type, but every time I use a member I'd rather not write out the enum name. I have a situation like the following:

enum PolygonT : byte { TRIANGLE, RECTANGLE, STAR }

void someFunc(PolygonT shape) { //some stuff }

I'd like to be able to call someFunc(TRIANGLE) rather than someFunc(PolygonT.TRIANGLE). Being clear but not being too long is my aim. Writing the type makes it too verbose and I have lazy fingers...

I don't mind if adding another enum with members of the same name like this:

enum CelestialBodiesT : byte { MOON, SUN, BLACK_HOLE, STAR }

...would force me to call someFunc(PolygonT.STAR) by the compiler, but for the case where there's no ambiguity, I don't want to write out the type of the enum...

I know I can add in an 'alias this' for classes and structs, but I think I only get one and if it's an enum I'm using all over the place I don't want to 'alias this' it everywhere...

Is there a way I can do this while retaining type safety? (can I be lazy and protected at the same time?)

Reply via email to