离开一段时间后,有些事情发生了变化。我曾经能够做到这一点:
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以使用字符串键从字典中提取值。
因此,似乎Name()
类型上有一个Symbol
函数返回String
。我正在寻找Symbol
类型的功能,并没有找到一个(必须错过它)。有效的代码是hName.As<Symbol>()->Name().As<String>();
。
如下面评论中所述,Symbol()
不需要有名字,所以要小心!