【发布时间】:2018-03-14 14:55:08
【问题描述】:
我正在尝试为任何类动态获取类属性名称及其数据类型,以便我可以构建 Db 所需的模式模型,例如谷歌大查询。 我能够获取字符串或 int 属性名称和类型,但使用数组或自定义类列表不知道如何获取它们的类属性和名称。
我的模型是:
public class StateModel
{
public string State { get; set; }
public string Gender { get; set; }
public int Year { get; set; }
public string Name { get; set; }
public int Number { get; set; }
public int[] Items { get; set; }
public List<string> Values { get; set; }
public Coordinate[] OrdinateArray { get; set; }
public List<Coordinate> Ordinates { get; set; }
public Coordinate CoordinateObj { get; set; }
}
public class Coordinate
{
public int Point { get; set; }
public string Value { get; set; }
}
我获取类属性的方法是:
public static Dictionary<string, object> GetColumnFromClass<T>() where T : class, new()
{
Dictionary<string, object> fields = new Dictionary<string, object>();
T obj = new T();
var type = obj.GetType();
PropertyInfo[] properties = type.GetProperties();
foreach (var item in properties)
{
fields.Add(item.Name, item.PropertyType.Name.ToUpper())
}
return fields;
}
谁能帮我从以下属性中获取坐标类详细信息,即(坐标类的点和值名称):
public Coordinate[] OrdinateArray { get; set; }
public List<Coordinate> Ordinates { get; set; }
public Coordinate CoordinateObj { get; set; }
注意:我需要动态获取子类详细信息,而不是硬编码。
【问题讨论】:
-
@DiskJunky 我的问题不是仅确定它的集合,而是获取集合属性名称及其数据类型。我在问题中已经明确提到了
-
@DiskJunky 抱歉,我没有迭代任何列表。这个类只是一个泛型类型,我需要获取它的所有属性名称和数据类型,与属性值无关。我感谢您为提供帮助而付出的努力,但我的问题很简单,如果该类被定义为简单类 List 或 [],如何获取自定义子类属性名称及其数据类型。
-
抱歉,我没有从这个问题中得到答案。澄清一下,您是否试图从属性
OrdinateArray中获取类型Coordinate?看起来您已经有了属性名称,只是缺少类型...如果我理解正确的话? -
@DiskJunky 宾果游戏没错。由于类型是自定义类,我可能还需要读取自定义类的所有属性名称和数据类型..