获取多个对象的C#属性值

时间:2014-02-06 04:43:01

标签: c#

我有几个域对象:

public class Person()
{
public int age { get; set; }
public string city{ get; set; }  
}

public class Company()
    {
    public string name{ get; set; }
    public string address{ get; set; }  
    }

我有另一个类调用MyMethod,如下所述。

public class CallTest()
{
 Person p= new Person{age=10,city="dd"};
 Company c= new Company{name="mynae",address="myaddress"};
 MyMethod(p);
 MyMethod(c);
}

mi.Name给了我属性名称。但是我如何获得房产价值?

public class MyMethod(object obj)
{
    Type t = obj.GetType();
    PropertyInfo prop = t.GetProperty("Items");
    foreach (MemberInfo mi in t.GetMembers())
            {
                    if (mi.MemberType == MemberTypes.Property)
                    {
                       var x = mi.Name;
                    }
                }
}

2 个答案:

答案 0 :(得分:2)

您需要将MemberInfo投射到PropertyInfo才能获得它的值:

.....
if (mi.MemberType == MemberTypes.Property)
{
    var x = mi.Name;
    var value = ((PropertyInfo) mi).GetValue(obj);
}
.....

答案 1 :(得分:0)

要获取属性obj.Items的值,您可以使用以下代码

public class MyMethod(object obj)
{
    Type t = obj.GetType();
    PropertyInfo prop = t.GetProperty("Items");
    var x = prop.GetValue(obj, null);
}