Tech
Forums
Jobs
Books
Events
Interviews
Live
More
Learn
Training
Career
Members
Videos
News
Blogs
Login
Sign Up
Ask Question
1
Reply
Exist Enum? Return Enum Value From String/XmlEnumAttribute
Desenvolvimento Gestor
Oct 2 2017 2:56 PM
241
Reply
Can you simplify this code but without changing ENUM?
/// [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")] [System.SerializableAttribute()] public enum Velocidade { /// [System.Xml.Serialization.XmlEnumAttribute("01")] Baixa, /// [System.Xml.Serialization.XmlEnumAttribute("02")] Normal, /// [System.Xml.Serialization.XmlEnumAttribute("03")] Rapida, }
Here is to verify if exist
private
bool
EnumHasValue(Type pTipoDoEnum,
string
valorDoEnum)
{
foreach
(var val
in
Enum.GetValues(pTipoDoEnum))
{
var member = pTipoDoEnum.GetMember(val.ToString()).FirstOrDefault();
var attribute = member.GetCustomAttributes(
false
).OfType<XmlEnumAttribute>().FirstOrDefault();
if
(valorDoEnum == attribute.Name)
{
return
true
;
}
}
return
false
;
}
Now, find string and return value:
private
object
EnumFromString(Type pTipoDoEnum,
string
valorDoEnum)
{
foreach
(var val
in
Enum.GetValues(pTipoDoEnum))
{
var member = pTipoDoEnum.GetMember(val.ToString()).FirstOrDefault();
var attribute = member.GetCustomAttributes(
false
).OfType<XmlEnumAttribute>().FirstOrDefault();
if
(valorDoEnum == attribute.Name)
{
return
val;
}
}
throw
new
Exception(
"Não existe o valor "
+ Text +
" para o tipo "
+ pTipoDoEnum.ToString() +
". Utilize o método EnumHasValue antes da conversão."
);
}
this is the call:
string
text =
"02"
;
Velocidade velocidade =
new
Velocidade();
if
(EnumHasValue(
typeof
(Velocidade),text)) velocidade = (Velocidade)EnumFromString(
typeof
(Velocidade), text);
// O resultado é: "Normal"
textBox1.Text =
"O resultado é: \""
+ velocidade.ToString() +
"\""
;
Upload Source Code
Select only zip and rar file.
Post
Reset
Cancel
Answers (
1
)
Next Recommended Forum
Visual studio 2010 crashes on preview of crystal reports.
In the listView changes the icon distance ?