Skip to content

API Host ClrTypeRegistry

Liu.Yandong.Hanks edited this page Aug 19, 2026 · 3 revisions

ClrTypeRegistry and TypeAccess

控制脚本可见 CLR 类型

Control CLR types visible to scripts

.NET Host API 目录

概述

ClrTypeRegistry 将脚本别名映射到 CLR 类型。注册等同于向脚本授予能力,因此只应注册经过审查的类型,并以最小 TypeAccess 暴露成员。

ClrTypeRegistry maps script aliases to CLR types. Registration grants capability to scripts, so register reviewed types only and expose the smallest suitable TypeAccess.

RegisterType(type, alias, access)

Parameters:

  • type
    CLR 类型。

    CLR type.

  • alias
    脚本可见别名。

    Script-visible alias.

  • access
    允许的构造器/静态访问范围。

    Allowed constructor/static access.

Returns

无。

None.

engine.ClrRegistry.RegisterType(typeof(HostCalculator), "Calculator", TypeAccess.All);

UnregisterType(alias)

Parameters:

  • alias
    要移除的脚本别名。

    Script alias to remove.

Returns

是否移除了注册项。

Whether a registration was removed.

var removed = engine.ClrRegistry.UnregisterType("Calculator");

TryGetClrType(alias, out descriptor)

Parameters:

  • alias
    脚本别名。

    Script alias.

  • descriptor
    接收 ClrType 描述符。

    Receives the ClrType descriptor.

Returns

是否找到注册项。

Whether a registration exists.

if (engine.ClrRegistry.TryGetClrType("Calculator", out var descriptor))
{
    Console.WriteLine(descriptor);
}

Dispose()

Parameters:

  • 无。

    None.

Returns

无。

None.

用途

释放 Registry 生命周期资源;通常由拥有它的 Engine 生命周期统一管理。

Releases registry-lifetime resources; normally managed with the owning engine's lifetime.

engine.ClrRegistry.Dispose();

TypeAccess.Constructor / Static / All

  • Constructor
    仅构造器。

    Constructors only.
    engine.RegisterType<HostCalculator>("Calculator", TypeAccess.Constructor);

  • Static
    仅静态成员。

    Static members only.
    engine.RegisterType<HostMath>("HostMath", TypeAccess.Static);

  • All
    构造器与静态成员。

    Constructors and static members.
    engine.RegisterType<HostCalculator>("Calculator", TypeAccess.All);

实例成员只能来自成功构造或宿主注入的实例。

Instance members are available only from successfully constructed or host-injected instances.

Clone this wiki locally