How can an int
be cast to an enum
in C#?
It can help you to convert any input data to user desired enum. Suppose you have an enum like below which by default int. Please add a Default value at first of your enum. Which is used at helpers medthod when there is no match found with input value.
public enum FriendType
{
Default,
Audio,
Video,
Image
}
public static class EnumHelper
{
public static T ConvertToEnum(dynamic value)
{
var result = default(T);
var tempType = 0;
//see Note below
if (value != null &&
int.TryParse(value.ToString(), out tempType) &&
Enum.IsDefined(typeof(T), tempType))
{
result = (T)Enum.ToObject(typeof(T), tempType);
}
return result;
}
}
N.B: Here I try to parse value into int, because enum is by default int If you define enum like this which is byte type.
public enum MediaType : byte
{
Default,
Audio,
Video,
Image
}
You need to change parsing at helper method from
int.TryParse(value.ToString(), out tempType)
to
byte.TryParse(value.ToString(), out tempType)
I check my method for following inputs
EnumHelper.ConvertToEnum(null);
EnumHelper.ConvertToEnum("");
EnumHelper.ConvertToEnum("-1");
EnumHelper.ConvertToEnum("6");
EnumHelper.ConvertToEnum("");
EnumHelper.ConvertToEnum("2");
EnumHelper.ConvertToEnum(-1);
EnumHelper.ConvertToEnum(0);
EnumHelper.ConvertToEnum(1);
EnumHelper.ConvertToEnum(9);
sorry for my english