1

*请注意,这不适用于基于 Web 的应用程序,它是基于 Windows 的。

我正在构建一个应用程序,我需要用户提交将由应用程序运行的简单 javascript。

脚本将调用作为 c# 构建的一部分的函数。

一个例子:

C#代码:

public void helloWorld()
{
    Debug.WriteLine("hello world");
}

用户提交的 Javascript:

helloWorld();

JavaScript 将在运行时由应用程序解析,然后在我的 C# 代码中调用所需的函数。

为什么?..

我的应用程序将由几乎没有编程经验的人使用,他们输入非常简单的 JavaScript,应用程序将尝试在用户计算机上自动执行一些任务。所以我使用 JavaScript 的原因是因为它很简单,对于没有经验的人来说很容易学习。

4

3 回答 3

3

听起来您需要为您的应用程序使用 JavaScript 解析器。老实说,考虑到脚本的上下文和您的代码不同,我认为您正在做的事情是不可能的。然而,这个项目似乎正在做一些可能让你到正确的地方的事情:

http://javascriptdotnet.codeplex.com/

就个人而言,我认为制作某种 XML 格式会很有用(比如 UrlRewriter.net 如何使重写 URL 变得容易):

 <xml>
 <commands>
     <!-- Expose a Set of Condition Objects to Select From -->
     <if condition="YourApplication.Conditions.RightClickOnDesktop">
         <print text="HelloWorld" />
     </if>
 </commands>
于 2012-04-16T15:04:43.660 回答
3

这是一个运行 javascript 代码的示例,该代码反过来调用 ac# 方法

[System.Runtime.InteropServices.ComVisible(true)]
public class CSharpClass
{
    public void MsgBox(string s)
    {
        MessageBox.Show(s);
    }
}

-

Type scriptType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"));

dynamic obj = Activator.CreateInstance(scriptType, false);
obj.Language = "Javascript";
obj.AddObject("mywindow", new CSharpClass(), true);
var result = obj.Eval(
    @"
        function test(){
            mywindow.MsgBox('hello'); 
        }
        test();
    "
    );
于 2012-04-16T16:17:45.933 回答
-1

为什么你“需要用户提交简单的 javascripts”?您的应用程序是什么,用户需要它做什么?为什么你决定使用脚本语言来做这件事?我并不是说这是错误的答案,而是你没有证明这个结论是正确的。

如果您的应用程序将被“几乎没有编程经验的人”使用,我不建议实施脚本语言。非程序员很难理解源代码和变量等基本概念。

我建议首先调查用户脚本的宏录制。对于 .NET,有UI 自动化White自动化框架。

于 2012-04-16T16:26:54.903 回答