I don't totally agree here. While it may be a good idea to check, I don't think you should throw an exception. That should be reserved for special cases or user generated errors. In this case, if the parameter is not passed correctly, it's a developer error. Debug.Assert would be a better choice.
>Dimitry: If the enum value could not be used then an int might be a better choice - but whether a string or an int it would be wise to check that it is a valid value. eg:
int direction = 1;
> if (Enum.IsDefined(typeof(ParameterDirection), (ParameterDirection)direction))
> param.Direction = (ParameterDirection)1;
> else
> throw (new InvalidCastException("Invalid ParameterDirection"));
Craig Berntson
MCSD, Microsoft .Net MVP, Grape City Community Influencer