gpt4 book ai didi

javascript - 从脚本中获取 System.Type 实例 (ClearScript)

转载 作者:行者123 更新时间:2023-12-02 21:08:39 28 4
gpt4 key购买 nike

尝试从 ClearScript 托管的脚本中调用 Enum.Parse 时遇到异常

错误

Error: The non-generic method 'System.Enum.Parse(System.Type, string)' cannot be used with type arguments
--- Script error details follow ---
Error: The non-generic method 'System.Enum.Parse(System.Type, string)' cannot be used with type arguments
at translateParameterValue (Script [temp]:11:27) -> return clr.System.Enum.Parse(app.MyLibrary.MyEnum, value);

脚本

return clr.System.Enum.Parse(app.MyLibrary.MyEnum, value);

我很确定我正确注册了 clr 对象(其中包含 mscorlibSystemSystem.Core)

ClearScript 似乎正在尝试调用,但很困惑是否使第一个参数 app.MyLibrary.MyEnum 成为通用参数或将其作为 System.Type 传递参数。

问题

在这种情况下,我该如何正确调用 System.Enum.Parse 函数?

最佳答案

答案比我想象的要简单。由于 ClearScript 将第一个参数视为通用参数,因此您只需要一个从类型参数返回 System.Type 实例的函数,该实例可以简单如下:

class Utility
{
public Type GetType<T>() {
return typeof(T);
}
}

然后将其注册到您的ScriptEngine:

_engine.AddHostObject("Utility", new Utility());

然后在脚本中使用它:

return clr.System.Enum.Parse(Utility.GetType(nepes.DecaTech.CoreData.ProcessStates), value);

ClearScript 还附带一个实用程序类 ExtendedHostFunctions,它提供了几个有用的实用程序函数,其中包括与上述 typeOf(T) 类似的函数。

关于javascript - 从脚本中获取 System.Type 实例 (ClearScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61153434/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com