C#动态对象具有带有at符号的属性

C#动态对象具有带有at符号的属性,c#,C#,我的elasticsearch结果集中有一个对象; 我通过这个foreach迭代了这一点: foreach (Nest.IHit<dynamic> temp in result.Hits) { } 现在,在我的代码中,我可以访问如下参数temp.Source.title或temp.Source.url,但当我想访问@timestamp时,它返回null 知道如何访问时间戳吗?我删除了我的原始答案,因为我是在为您尝试代码后发现的 答案中的相关代码如下: static object

我的elasticsearch结果集中有一个对象; 我通过这个foreach迭代了这一点:

foreach (Nest.IHit<dynamic> temp in result.Hits) {

}
现在,在我的代码中,我可以访问如下参数
temp.Source.title
temp.Source.url
,但当我想访问
@timestamp
时,它返回
null


知道如何访问时间戳吗?

我删除了我的原始答案,因为我是在为您尝试代码后发现的

答案中的相关代码如下:

static object GetDynamicMember(object obj, string memberName)
{
    var binder = Binder.GetMember(CSharpBinderFlags.None, memberName, obj.GetType(),
    new[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null) });
    var callsite = CallSite<Func<CallSite, object, object>>.Create(binder);
    return callsite.Target(callsite, obj);
}
静态对象GetDynamicMember(对象obj,字符串memberName)
{
var binder=binder.GetMember(CSharpBinderFlags.None,memberName,obj.GetType(),
新[]{CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None,null)};
var callsite=callsite.Create(活页夹);
返回callsite.Target(callsite,obj);
}

它使用反射来建立调用以获取值,并且“@timestamp”可以很容易地作为字符串传入。

我删除了我的原始答案,因为我在为您尝试代码中的某些内容后发现了这一点

答案中的相关代码如下:

static object GetDynamicMember(object obj, string memberName)
{
    var binder = Binder.GetMember(CSharpBinderFlags.None, memberName, obj.GetType(),
    new[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null) });
    var callsite = CallSite<Func<CallSite, object, object>>.Create(binder);
    return callsite.Target(callsite, obj);
}
静态对象GetDynamicMember(对象obj,字符串memberName)
{
var binder=binder.GetMember(CSharpBinderFlags.None,memberName,obj.GetType(),
新[]{CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None,null)};
var callsite=callsite.Create(活页夹);
返回callsite.Target(callsite,obj);
}
它使用反射来建立调用以获取值,并且“@timestamp”可以很容易地作为字符串传入。

C#标识符不能以
@
开头。实际上,您正在尝试访问
时间戳
-
@
被称为逐字说明符,它允许您使用关键字作为标识符,例如,您可以有一个名为
@this
的本地标识符,它实际上就是
this
标识符

唯一的方法是按名称访问变量,类似于
yourvar[“@timestamp”]
C;标识符不能以
@
开头。实际上,您正在尝试访问
时间戳
-
@
被称为逐字说明符,它允许您使用关键字作为标识符,例如,您可以有一个名为
@this
的本地标识符,它实际上就是
this
标识符


唯一的方法是按名称访问变量,类似于
yourvar[“@timestamp”]

我以为这是一个json请添加显示如何访问这些属性的代码这不是json,@MichalDymel刚刚添加了:)我以为这是一个json请添加显示如何访问这些属性的代码这不是json,@MichalDymel刚刚添加了:)