反射:根据属性数据类型转换返回的属性值



第一个问题不重复。

公共类{public VehicleEnum关键字{get;set;}}

public enum VehicleEnum { CAR = 0 , BIKE = 1 };

object modelObject = Activator.CreateInstance("ModelAssembly", "ModelAssembly.Sample");
object propValue = modelObject.GetType().GetProperty("Keyword").GetValue(modelObject);
  1. 是否有任何方法返回字符串数据类型的值(即:"汽车")。
  2. 是否有方法将枚举值列表作为字符串列表(不仅仅是赋值),即在这种情况下,{"CAR", "BIKE"}

回答第一个问题。: -) 使用ObjectHandle并展开对象,而不是对象。

    ObjectHandle modelObject = Activator.CreateInstance("ModelAssembly","ModelAssembly.Sample");
 if (modelObject != null)
            {
                PropertyInfo memInfo = modelObject.Unwrap().GetType().GetProperty("Keyword", BindingFlags.Public | BindingFlags.Instance);
                if (memInfo != null)
                {
                    object value = memInfo.GetValue(modelObject.Unwrap());
                    if (value != null)
                        propertyValue = value.ToString();
                }
            }      
同样适用于第二个问题,并且已经在这篇文章中得到了回答。
        var property = modelObject.GetType().GetProperty("Keyword");
        var propValue = property.GetValue(modelObject);
        foreach (var s in Enum.GetNames(property.PropertyType))
            Console.WriteLine(s);
        Console.WriteLine(propValue.ToString());

您可以使用Convert.ChangeType(object, Type)转换为任何所需的类型,尽管如果您只对字符串类型感兴趣,您可以始终使用object.ToString()

访问枚举的字符串表示形式,使用Enum.GetNames(Type)

最新更新