限制变量的能力

Limiting the capabilities of a variable

我按照以下示例开始使用 Iron Python: How can I call (Iron)Python code from a C# app?

我想知道的是以下内容:我如何告诉 IronPython 每当我从给定名称空间获取对象时应该可以从脚本调用哪些方法,因为我不知道想公开命名空间的全部功能?

tl;dr :假设我公开了要在我的 python 脚本中创建的对象 A。我怎样才能限制 A 可以做什么而不必明确地将其移动到新类型?

使用类型化对象并使用 SetVariable 将它们暴露给脚本引擎。

在为此类对象定义 API 之前,还要考虑您想要向用户公开的流程。

this.proxy = new MySpecialType();
engine.GetBuiltinModule().SetVariable("proxy", this.proxy);