c# - Get name of Enum instance -
say have enum:
public enum myenum{ valueone = 1, valuetwo = 2, valuethree = 3 }
and field/variable:
public myenum myenuminstance = myenum.valuetwo;
i need name
of myenuminstance
via reflection from class.
i tried:
myclassinstance.gettype().getfield("myenuminstance").getvalue(myclassinstance)
which returns valueone
, no matter myenuminstance
set to.
how can string value/name of enum field via reflection?
you don't need reflection. need call .tostring()
.
myenuminstance.tostring();
which output "valuetwo"
;
however, if insist on using reflection, following example works fine:
var myclassinstance = new myclass(); myclassinstance.gettype() .getfield("myenuminstance") .getvalue(myclassinstance); public enum myenum { valueone = 1, valuetwo = 2, valuethree = 3 } public class myclass { public myenum myenuminstance = myenum.valuetwo; }
note in c#6 can use nameof
strongly-typed syntactic sugar:
myclassinstance.gettype() .getfield(nameof(myenuminstance)) .getvalue(myclassinstance);
if still not able access field, because not public described in sample code, in you'd need pass in appropriate binding flags.
myclassinstance .gettype() .getfield(nameof(myenuminstance), bindingflags.nonpublic | bindingflags.getfield | bindingflags.instance) .getvalue(myclassinstance);
Comments
Post a Comment