2017-03-09 64 views
-1

我有以下对象如何动态读取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 
+1

_“没有指定任何属性”_ - 意思是什么,究竟是什么?你为什么不想指定“属性”?你的意思只是类型,还是字段名称?为什么你想使用反射呢?这是慢的,通常有更好的方法来实现你的目标,无论如何。请参阅[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。如果你问关于你更广泛的目标的问题,你会得到更好的答案,而不是这个问题。 –

+0

事情是我想让它更动态,而不是指定属性名称,如果它可以通过索引读取 – SSK

+0

_“通过索引读取”_ - 意思是什么,到底是什么?恐怕你没有清楚地表达你的问题。您需要展示更多上下文并解释为什么使用反射对您来说是一种可接受的折衷。你当然可以走对象树来寻找给定名称的任何属性,但这是如何有用?你会如何使用它?请提供更多细节。 –

回答

0

为什么不试试

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

然后只处理该值。

也可以使用

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

然后运行一个for循环和使用访问其他属性和它们的值: roperties [I];

+0

我已经说过我不想在此处使用属性名称“属性”。因为我想让它动态 – SSK

+0

我编辑了我的答案:) –

+0

我试过了,但它不起作用。属性[0] .Name返回“容量” – SSK

0

stateValue会给你想要的结果。

​​
+0

我已经说过我不想在这里使用属性名称“属性”。因为我想让它变成动态的 – SSK

+0

你能否解释一下如何在不传递属性名称的情况下选择值。恐怕你没有完成这个问题。 –