如何动态读取C#中的内部属性值?

时间:2017-03-09 07:31:58

标签: c#

我有一个下面的对象

public class ResTemplate
{
    public string country { get; set; }
    public int jobCode { get; set; }
    public Attributes attributes { get; set; }
}

public class Attributes
{
    public string state { get; set; }
    public string region { get; set; }
}

现在我想将其转换为数据表而不使用属性名来读取值

预期输出

country  jobcode  state   region
US       001      IL      Chicago

2 个答案:

答案 0 :(得分:0)

为什么不试试

myObj.GetType().GetProperty("attributes ").GetType().GetProperty("state") 

然后只处理该值。

您也可以使用

PropertyInfo[] properties = myObj.GetType().GetProperties();

然后运行for循环并使用以下命令访问其他属性及其值:     roperties [I];

答案 1 :(得分:0)

stateValue会给你带来渴望的结果。

var objectValue =  myObj.GetType().GetProperty("attributes").GetValue(myObj, null);
var stateValue = objectValue.GetType().GetProperty("state").GetValue(objectValue, null);