That is unexpected... what we really want is to control the casting... for instance:
Colour eco;
if(Enum.TryParse("17", out eco)) //Parse successfully??
{
var isValid = Enum.GetValues(typeof (Colour)).Cast().Contains(eco);
if(isValid)
{
//It is really a valid Enum Colour. Here is safe!
}
}