标签: scripting-interface

如何开始为我的.NET应用程序设计和实现脚本界面?

如何开始为我的.NET应用程序设计和实现脚本界面?

VSTA(的.NET等同VBACOM),但据我了解,我将不得不支付许可费,我的应用程序的每个安装.它是一个开源的应用程序,所以这将无法正常工作.

还有例如嵌入式解释器(IronPython?),但我不明白这将如何允许将"对象模型"(见下文)暴露给外部(或内部)脚本.

子问题:

  • .NET中的脚本界面故事是什么?在.NET中这样做是否有点微不足道?
  • 例如,我的应用程序中的某些.NET对象及其包含的对象是否可以在运行时声明可以从外部访问?
  • 外部脚本如何访问我的应用程序(通过对象模型)?

背景:

我曾经为Macintosh应用程序设计并实现了一个相当复杂的脚本接口,用于从质谱仪(Mac OS,System 7)获取和分析数据,后来用于Windows应用程序的COM接口.

两者都设计有"对象模型"和类(可以具有属性).这些是重载的单词,但在脚本界面中,上下文对象模型本质上是特定类对象的包含层次结构.类具有属性,包含对象的列表,不仅是数据,还可以包含动词(动作/方法).例如,在Macintosh情况下,定义的应用程序对象可以包含一个采集对象,该对象具有仪器中使用的电压和fireLater动词的属性- 所有这些都可以从外部脚本中看到.

请注意,在这两种情况下,用于实现应用程序的编程语言中的类/对象与脚本对象模型无关.对于Macintosh的情况,用于实现脚本接口的机制由Apple定义.Apple还定义了一些如何设计对象模型的标准.例如,类中某些常见属性的标准化名称.

或者类似于在Microsoft Office应用程序中公开的COM接口,其中应用程序对象可用于添加到其文档列表(具有创建文档的GUI表示的副作用).

外部脚本可以在容器中创建新对象,并在任何给定时间浏览层次结构的内容.在Macintosh中,案例脚本可以用例如AppleScriptFrontier编写.

在Macintosh上,脚本接口的实现非常复杂.在Metroworks的C++类库中支持它(这个名字现在让我失望)使它变得更加简单.

.net object-model scripting-interface

33
推荐指数
6
解决办法
3075
查看次数

IronRuby作为.NET中的脚本语言

我想在我的.NET项目中使用IronRuby作为脚本语言(例如Lua).例如,我希望能够从Ruby脚本订阅特定事件,在宿主应用程序中触发,并从中调用Ruby方法.

我正在使用此代码来实例化IronRuby引擎:

Dim engine = Ruby.CreateEngine()
Dim source = engine.CreateScriptSourceFromFile("index.rb").Compile()
' Execute it
source.Execute()
Run Code Online (Sandbox Code Playgroud)

假设index.rb包含:

subscribe("ButtonClick", handler)
def handler
   puts "Hello there"
end
Run Code Online (Sandbox Code Playgroud)

我如何能:

  1. 使用C#方法订阅(在主机应用程序中定义)可以从index.rb中看到吗?
  2. 从宿主应用程序调用以后的处理程序方法?

.net c# ruby ironruby scripting-interface

8
推荐指数
1
解决办法
2157
查看次数

标签 统计

.net ×2

scripting-interface ×2

c# ×1

ironruby ×1

object-model ×1

ruby ×1