Skip to content

API Host ExportAttribute

Liu.Yandong.Hanks edited this page Sep 10, 2026 · 3 revisions

ExportAttribute

标记由源生成器公开到脚本的普通 Core 方法、CLR 实例属性的 get 访问器、构造函数、NativeType 实例字段或静态数值常量。

命名空间:AuroraScript.Hosting。类型:class。

返回 .NET 宿主 API 参考 · 脚本原生类型

概览

CLR static Core 始终属于脚本 Type 对象,CLR instance Core 属于脚本实例。引擎自有 NativeReceiverType 的实例 Core 改用 ReceiverExportAttribute,因此从属性签名即可看出静态方法的脚本归属。

[Export("abs", MatchFailure.ReturnNaN)]
public static double AbsCore(double value) => Math.Abs(value);

已有 CLR 属性可以直接导出 getter:

public int Count
{
    [Export("count", IsGetter = true)]
    get => _count;
}

特性必须放在 get 上,不能放在属性声明上。类型已证明时直调 get_Count,动态访问使用适配器;无需转发用的 CountCore()。迁移时必须保留脚本返回类型和转换语义。

构造函数

ExportAttribute()
ExportAttribute(string scriptName)
ExportAttribute(string scriptName, MatchFailure failure)

无参形式只能用于至多一个 public 构造函数,以启用脚本 new。

属性

  • string ScriptName — 脚本成员名;Core 方法省略时从方法名推断。
  • MatchFailure Failure — 动态参数转换失败时的行为。
  • string DynamicAdapter — 已有动态适配器名。指定后不再自动生成动态包装器;同名固定参数重载必须共享一个显式适配器。
  • bool IsGetter — 将零参数、无 context 的实例 Core 或 CLR get 访问器导出为属性 getter。
  • bool IsSetter — 将一个必需参数且返回 void 的实例 Core 导出为同名属性 setter。
  • bool Writable — 是否允许脚本改写导出的成员槽。
  • bool Enumerable — 是否在属性枚举中包含该成员。

方法与静态常量的 Writable、Enumerable 默认均为 false。NativeType 实例字段保留自然默认值:可变 CLR 字段默认可写,字段默认可枚举;显式设置属性可覆盖这些默认值。

可写的方法或静态常量可能被脚本替换,因此不会写入编译器 Native 直调目录。Native 字段以及固定的 getter/setter 属性仍由生成的属性访问重写处理。

Core 可前缀 ScriptContext ctx 与 ScriptObject thisObject。脚本参数支持 double、int、long、ulong、bool、string、ScriptDatum、ScriptObject 子类、尾部默认值,以及 params double[] / params ScriptDatum[]。params 导出只生成动态适配器,不是直调候选。

参见

AuroraScript.JIT 4.0.0

入门

语言

脚本 API

宿主集成

工具

项目

Clone this wiki locally