Assuming the following enum:
public enum Gender
{
NotSet,
Masculine,
Feminine,
Neuter,
Other
}
And the following stripped down class:
public class Term
{
public Gender Gender { get; set; }
...
// Other properties (including other enums)
}
I wish to set Term.Gender using Reflection, ensuring that the value is defined on Gender before doing so.
I've tried
PropertyInfo pi = typeof(Term).GetProperty("Gender", BindingFlags.Public | BindingFlags.Instance);
pi.PropertyType then returns {Int32 Gender}.
If I then use
Enum.IsDefined(pi.PropertyType, aStringValue)
.NET throws an exception saying "Type provided must be an Enum".
I think the problem here is that the PropertyInfo obtains the underlying type and therefore states that the property is an Int32 rather than Gender.
I am able to call
pi.SetValue(mytermObj, aValue)
but this provides no safety that aValue is defined on Gender.
How can I dynamically, safely set an enum property if I know the name of that property and a corresponding value?
Aucun commentaire:
Enregistrer un commentaire