使用C#将对象属性映射到数组

时间:2011-12-19 19:29:26

标签: c# arrays object map properties

这可以在C#吗?

我这里的 POCO 对象是定义:

public class Human
{
    public string Name{get;set;}
    public int Age{get;set;}
    public int Weight{get;set;}
}

我想将对象Human的属性映射到字符串数组。

这样的事情:

Human hObj = new Human{Name="Xi",Age=16,Weight=50};

或者我可以List<Human>

string [] props = new string [COUNT OF hObj PROPERTIES];

foreach(var prop in hObj PROPERTIES)
{
    props["NAME OF PROPERTIES"] = hObj PROPERTIES VALUE    
}

2 个答案:

答案 0 :(得分:2)

它应该是这样的:

var props = new Dictionary<string, object>();
foreach(var prop in hObj.GetType().GetProperties(BindingFlags.Public|BindingFlags.Instance);)
{
    props.Add(prop.Name, prop.GetValue(hObj, null));
}

有关GetProperties的信息,请参阅here,有关PropertyInfo的信息,请参阅here

答案 1 :(得分:0)

您可以使用反射来获取对象的属性和值:

var properties = typeof(Human).GetProperties();

IList<KeyValuePair<string, object>> propertyValues = new List<KeyValuePair<string, object>>();

foreach (var propertyInfo in properties)
{
    propertyValues.Add(propertyInfo.Name, propertyInfo.GetValue(oneHuman));
}