Часть моего программного обеспечения использует отражение.У меня проблема в том, что, хотя я могу получить тип свойства, я не могу преобразовать строковое значение, используя Type
из PropertyInfo.Вот почему я использую t
в примере кода.
Приведенный ниже код демонстрирует проблему с сообщением об ошибке в виде комментария кода.Синтаксическая ошибка на t
.как я могу решить эту проблему?спасибо
class Program
{
static void Main(string[] args)
{
Type t = typeof(Letters);
Letters letter = "A".ToEnum<t>(); //-- Type or namespace expected.
}
}
public enum Letters { A, B, C }
//-- This is a copy of the EmunHelper functions from our tools library.
public static class EnumExt
{
public static T ToEnum<T>(this string @string)
{
int tryInt;
if (Int32.TryParse(@string, out tryInt)) return tryInt.ToEnum<T>();
return (T)Enum.Parse(typeof(T), @string);
}
public static T ToEnum<T>(this int @int)
{
return (T)Enum.ToObject(typeof(T), @int);
}
}
Решение:
Следующее работает, потому что, когда значение устанавливается с помощью отражения, принимается фактический тип Enum.Где myObject.Letter = result
нет.
Type t = currentProperty.PropertyType;
Enum result = Enum.Parse(t, @string) as Enum;
ReflectionHelper.SetProperty(entity, "LetterPropertyName", result);
Спасибо всем за помощь.