获取对象嵌入值,将路径指定为字符串

时间:2015-06-03 15:27:08

标签: c# reflection

我知道在给定属性名称的情况下,您可以使用反射来获取属性值。但是,如果我有"Case.Contact.Fax"之类的字符串,我如何解析Case对象以获取Fax数字。

1 个答案:

答案 0 :(得分:0)

if (caseObj is Case)
{
    var contact = caseObj.GetType().GetProperty("Contact").GetValue(caseObj, null);
    var faxValue = contact.GetType().GetProperty("Fax").GetValue(contact, null);
}

或简单地说:

if (caseObj is Case)
{
     var faxValue = (Case as caseObj).Contact.Fax;
}

或者如果您无法获得caseObj类型,但您确定它始终为Case

var faxValue = (caseObj as dynamic).Contact.Fax;

假设树中的所有属性都不是null