使用javascript进行自定义目的

时间:2012-08-25 00:00:24

标签: c# javascript 3d raytracing

我正在写一个光线跟踪器作为我的完整3D引擎的一部分。我打算使用javascript作为脚本语言而不是编写自己的脚本语言。问题是我该如何使用它?顺便说一下,光线跟踪器和UI是用C#编写的。

3 个答案:

答案 0 :(得分:5)

这显示了Javascript和c#之间的双向交互。

  1. Javascript调用c#方法
  2. C#获取Javascript中表达式的结果
  3. -

    Type scriptType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"));
    
    dynamic obj = Activator.CreateInstance(scriptType, false);
    obj.Language = "javascript";
    obj.AddObject("MyClass",new JSAccessibleClass());
    
    obj.Eval("MyClass.MsgBox('Hello World')"); //<--1
    var result = obj.Eval("3+5"); //<--2
    
    
    [ComVisible(true)]
    public class JSAccessibleClass
    {
        public void MsgBox(string s)
        {
            MessageBox.Show(s);
        }
    }
    

答案 1 :(得分:1)

您可以利用许多独立的JavaScript实现来实现此目的:

这是一个指向JavaScript的stackoverflow信息页面的链接,其中列出了许多这些实现的顶部:https://stackoverflow.com/tags/javascript/info

答案 2 :(得分:1)

虽然可以使用JavaScript作为.Net应用程序的脚本,但它并不是最受欢迎的选择。如果您可以选择其他语言 - IronPython或LUA.Net可能是您的选择,您将获得更好的支持。我最近在类似问题中列出了几个链接:Write npc scripts to be executed by c# using class with npc methods

否则,JavaScript.Net(.Net框架的一部分)或其他显式.Net或.Net绑定的实现将用作脚本语言。