如何将Local <name>转换为字符串?

时间:2019-03-04 22:59:19

标签: v8 embedded-v8

所以离开一段时间后,有些事情发生了变化。我曾经能够做到这一点:

void ObjectTemplateProxy::GetProperty(Local<String> hName, const PropertyCallbackInfo<Value>& info)
{
    auto hStr = hName->ToString();

但是现在我需要一个隔离符,并且参数类型已更改为Local<Name>。然后我尝试了这个:

auto hStr = hName->ToString(info.GetIsolate());

但是这仍然不起作用,因为hStr为空。它为null,因为事实证明,名称实际上是Symbol类型,而不是String。我看不到任何将符号转换为字符串的方法,我需要通过P / Invoke将该名称发送到C#CLR,以使用字符串键从字典中提取值。

1 个答案:

答案 0 :(得分:0)

因此,似乎在Name()类型上有一个Symbol函数返回了String。我一直在寻找Symbol类型的函数,但没有找到(一定错过了)。有效的代码是hName.As<Symbol>()->Name().As<String>();

如以下注释中所述,Symbol()不需要具有名称,所以请当心!