Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取对象嵌入值,以字符串形式给定路径_C#_Reflection - Fatal编程技术网

C# 获取对象嵌入值,以字符串形式给定路径

C# 获取对象嵌入值,以字符串形式给定路径,c#,reflection,C#,Reflection,我知道,给定属性名,可以使用反射来获取属性值。但是,如果我有一个字符串,例如“Case.Contact.Fax”我如何解析Case对象以获取传真号 if (caseObj is Case) { var contact = caseObj.GetType().GetProperty("Contact").GetValue(caseObj, null); var faxValue = contact.GetType().GetProperty("Fax").GetValue(cont

我知道,给定属性名,可以使用反射来获取属性值。但是,如果我有一个字符串,例如
“Case.Contact.Fax”
我如何解析
Case
对象以获取
传真号

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

显示您到目前为止的代码以及您遇到的确切问题。鉴于字符串“Case.Contact.Fax”或“what.what.what”,还不完全清楚您在问什么您正在尝试实例化由分隔的第一个令牌的实例。?我正在从SFDC提取案例数据。case对象链接到contacts,因此我无法执行此操作,例如case.GetType().GetProperty('case.Contact.Fax')。GetValue(case,null)。如果您知道使用反射获取命名属性,将稍后发布代码。你是说你不知道如何用
拆分字符串?第一部分不起作用,因为第二部分
GetType()
将返回
PropertyInfo
,其中不包含属性
Fax
。你需要在每个阶段获得价值,但仍然不完全正确。传递给Fax属性的值必须是联系人,而不是大小写