Repository navigation
API Host ExportAttribute
标记由源生成器公开到脚本的普通 Core 方法、CLR 实例属性的 get 访问器、构造函数、NativeType 实例字段或静态数值常量。
命名空间:AuroraScript.Hosting。类型:class。
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 · 文档首页 · 仓库 · MIT License
- 宿主集成
- 脚本原生类型
- .NET 宿主 API 参考
- 引擎与执行
- 编译配置
- 源解析
- 脚本原生类型
- NativeTypeAttribute
- NativePackageAttribute
- ExportAttribute
- ReceiverExportAttribute
- AuroraExportValueKind
- AuroraParamAttribute
- AuroraGeneratedExportAttribute
- AuroraGeneratedConstantAttribute
- MatchFailure
- MatchLevel
- IAuroraNativeInstance
- INativeTypedDocument
- AuroraNativeObject
- AuroraNativeObjectAttribute
- 运行时值
- ScriptDatum
- ValueKind
- ScriptObject
- ScriptArray
- ScriptType
- TypeAccess
- ObjectFlags
- NumberValue
- Int64Value
- UInt64Value
- StringValue
- BooleanValue
- NullValue
- ScriptDate
- ScriptError
- ScriptHashMap
- ScriptRegex
- ScriptProxy
- StringBuffer
- ScriptEnumerator
- ScriptFunctionDelegate
- ScriptMethodDelegate
- ClosureFunction
- CLR 互操作
- 宿主 TDoc
- 扩展包
- 序列化与调试
- 异常与诊断