我有几个域对象:
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;
}
}
}
答案 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);
}