問題タブ [scripting-interface]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NETアプリケーションのスクリプトインターフェイスの設計と実装を開始するにはどうすればよいですか?
.NETアプリケーションのスクリプトインターフェイスの設計と実装を開始するにはどうすればよいですか?
VSTA(.NETに相当するVBAfor )がありますCOMが、私が理解している限り、アプリケーションをインストールするたびにライセンス料を支払う必要があります。これはオープンソースのアプリケーションであるため、これは機能しません。
たとえば、インタプリタの埋め込み(IronPython?)もありますが、これによって「オブジェクトモデル」(以下を参照)を外部(または内部)スクリプトに公開する方法がわかりません。
サブ質問:
- .NETのスクリプトインターフェイスストーリーとは何ですか?.NETでこれを行うのはどういうわけか簡単ですか?
- たとえば、アプリケーション内の一部の.NETオブジェクトとそれに含まれるオブジェクトは、実行時に外部からアクセス可能であると宣言できますか?
- 外部スクリプトはどのようにして(オブジェクトモデルを介して)アプリケーションにアクセスできますか?
バックグラウンド:
私はかつて、質量分析計(Mac OS、System 7 )からデータを取得および分析するためのMacintoshアプリケーション用のかなり複雑なスクリプトインターフェイスと、後でWindowsアプリケーション用のCOMインターフェイスを設計および実装しました。
どちらも「オブジェクトモデル」とクラス(プロパティを持つことができます)を使用して設計されました。これらはオーバーロードされた単語ですが、スクリプトインターフェイスのコンテキストでは、オブジェクトモデルは基本的に特定のクラスのオブジェクトの包含階層です。クラスには、プロパティ、含まれているオブジェクトのリストがあり、データであるだけでなく、動詞(アクション/メソッド)も含めることができます。たとえば、Macintoshの場合、定義されたアプリケーションオブジェクトには、機器で使用される電圧と動詞のプロパティを持つ取得オブジェクトを含めることができますfireLater。これらはすべて、外部スクリプトから見たものです。
どちらの場合も、アプリケーションの実装に使用されるプログラミング言語のクラス/オブジェクトは、スクリプトオブジェクトモデルとは何の関係もないことに注意してください。Macintoshの場合、スクリプトインターフェイスの実装に使用されるメカニズムはAppleによって定義されました。オブジェクトモデルの設計方法について、Appleによって定義されたいくつかの標準もありました。たとえば、クラス内の特定の一般的なプロパティの標準化された名前。
または、Microsoft Officeアプリケーションで公開されているCOMインターフェイスのように、アプリケーションオブジェクトを使用してドキュメントのリストに追加できます(ドキュメントのGUI表現を作成するという副作用があります)。
外部スクリプトは、コンテナ内に新しいオブジェクトを作成し、いつでも階層のコンテンツをナビゲートできます。Macintoshでは、ケーススクリプトはAppleScriptやFrontierなどで記述できます。
Macintoshでは、スクリプトインターフェイスの実装は非常に複雑でした。MetroworksのC++クラスライブラリでのサポート(名前は今のところ私にはわかりません)により、はるかに簡単になりました。
c# - .NETのスクリプト言語としてのIronRuby
.NETプロジェクトでスクリプト言語として(たとえば、Luaなど) IronRubyを使用したいと思います。たとえば、Rubyスクリプトから特定のイベントにサブスクライブし、ホストアプリケーションで起動して、そこからRubyメソッドを呼び出せるようにしたいです。
IronRubyエンジンをインスタンス化するためにこのコードを使用しています:
index.rbに次のものが含まれているとします。
どうすればよいですか:
- C#メソッドSubscribe(ホストアプリケーションで定義)をindex.rbから表示しますか?
- ホストアプリケーションから後でハンドラーメソッドを呼び出しますか?