如何开始为我的 .NET 应用程序设计和实现脚本接口?
有VSTA http://en.wikipedia.org/wiki/Visual_Studio_Tools_for_Applications(.NET 相当于VBA http://en.wikipedia.org/wiki/Visual_Basic_for_Applications for COM http://en.wikipedia.org/wiki/Component_Object_Model),但据我了解,我必须为每次安装应用程序支付许可费。它是一个开源的
应用程序,因此这将不起作用。
还有例如解释器的嵌入(IronPython?),但我不明白这如何允许将“对象模型”(见下文)暴露给外部(或内部)脚本。
子问题:
- .NET 中的脚本接口故事是什么?在 .NET 中执行此操作是否很简单?
- 例如。我的应用程序中的某些 .NET 对象及其包含的对象是否可以声明为可在运行时从外部访问?
- How can external脚本访问我的应用程序(通过对象模型)?
背景:
我曾经为 Macintosh 应用程序设计并实现了一个相当复杂的脚本接口,用于采集和分析来自质谱仪 http://en.wikipedia.org/wiki/Mass_spectrometry#Time-of-flight(苹果系统,System 7 http://en.wikipedia.org/wiki/System_7)以及后来的 Windows 应用程序的 COM 接口。
两者都是用“对象模型”和类(可以具有属性)设计的。这些都是超载的词语,但是
在脚本接口上下文对象模型中,本质上是特定类的对象的包含层次结构。类具有属性、所包含对象的列表,并且不仅是数据,还可以具有动词(操作/方法)。例如。在 Macintosh 情况下,定义的应用程序对象可以包含一个采集对象,该对象具有仪器中使用的电压属性和fireLater
动词 - 全部如外部脚本所示。
请注意,在这两种情况下,用于实现应用程序的编程语言中的类/对象与脚本对象模型无关。对于 Macintosh 来说,用于实现脚本接口的机制是由 Apple 定义的。 Apple还定义了一些关于如何设计对象模型的标准。例如,类中某些公共属性的标准化名称。
或者像 Microsoft Office 应用程序中公开的 COM 接口一样,其中应用程序对象可用于添加到其文档列表(具有创建文档的 GUI 表示形式的副作用)。
外部脚本可以在容器中创建新对象,并在任何给定时间浏览层次结构的内容。在 Macintosh 中,案例脚本可以用以下语言编写:苹果脚本 http://en.wikipedia.org/wiki/AppleScript or Frontier http://en.wikipedia.org/wiki/UserLand_Software#Frontier.
在 Macintosh 上,脚本接口的实现非常复杂。
支持它在地铁工厂 http://en.wikipedia.org/wiki/Metrowerks' C++ 类库(我现在想不起这个名字了)让它变得简单多了。