-
Notifications
You must be signed in to change notification settings - Fork 0
API Host ClrMarshaller
CLR 与脚本值转换
Conversion between CLR and script values
Overview
ClrMarshaller 提供显式边界转换。当 API 已经接收 ScriptDatum 时优先传递 Datum,避免不必要的对象包装与反转换。
ClrMarshallerprovides explicit boundary conversion. When an API already acceptsScriptDatum, pass the datum directly to avoid unnecessary object wrapping and conversion back.
Parameters:
-
value
CLR 值。CLR value.
-
datum
接收写入的 Datum。Datum receiving the write.
Returns
ToDatum 返回转换结果;WriteToDatum 无返回。
ToDatumreturns converted value;WriteToDatumreturns none.
var datum = ClrMarshaller.ToDatum(new[] { 1, 2, 3 });
ClrMarshaller.WriteToDatum(ref datum, "Aurora");Parameters:
-
values
object[]或ScriptObject[]。object[]orScriptObject[].
Returns
ScriptDatum[]。
ScriptDatum[].
var arguments = ClrMarshaller.ToDatums(new object[] { 20, 22 });
var result = domain.Execute("MAIN", "add", arguments);Parameters:
-
value
CLR 值。CLR value.
Returns
可供脚本使用的 ScriptObject。
ScriptObjectusable by scripts.
var scriptValue = ClrMarshaller.ToScript(new { Name = "Aurora" });Parameters:
-
value
ScriptObject或ScriptDatum。ScriptObjectorScriptDatum. -
targetType
所需 CLR 类型。Requested CLR type.
-
result
接收转换结果。Receives conversion result.
Returns
转换是否成功。
Whether conversion succeeded.
var value = ScriptDatum.FromNumber(42);
if (ClrMarshaller.TryConvertArgument(value, typeof(int), out var result))
{
Console.WriteLine((int)result);
}AuroraScript.JIT 4.0.0 · Documentation Home · Repository · MIT License