如何在C#中创建脚本引擎类

本文关键字:脚本 引擎 创建 | 更新日期: 2023-09-27 18:06:22

可能重复:
是否可以从C++应用程序调用C#应用程序?

我正在考虑编写一个概念验证应用程序,该应用程序包含一个运行(执行(.CLI语言(例如C#、VB.Net等(的脚本引擎。

我最初想用C++创建脚本引擎应用程序,但这似乎充满了问题和解决方案。相反,我现在想用C#编写脚本引擎。

我已经勾勒出了一个非常粗略的想法,我想在下面做什么:

代码仍然是伪C++,但希望语义应该很清楚:

class GenericDotNetLangInterpreter
{
    public:
       Results run(const Arguments& args);       
    protected:
       GenericDotNetLangInterpreter(const std::string &script);
};
class MyInterpreter : private GenericDotNetLangInterpreter
{
   public:
       MyInterpreter(const LanguageType l);
       Results run(const Arguments& args);       
}

几个问题:

  1. 以前有人做过这种事情吗?有没有一些代码可以作为参考?

  2. 在这条路上,我需要注意哪些问题?

如何在C#中创建脚本引擎类

不是一个真正的答案,但指出C#和VB.Net没有被解释,而是被编译到IL(类似于Java的字节码(。换句话说,您的API名称和签名可能会更改。您需要调用相关联的编译器,然后执行代码。

有一些.Net语言可以在DLR上运行,但我不清楚如何从本地语言调用它。

托管和非托管应用程序之间的限制比看起来更窄。您的C++应用程序可以链接到mscorelib(基本的.NET支持(。

从那时起,您的C++应用程序可以将您的文本"脚本"编译为.NET字节码并执行它。

这是否合理或是一个好主意取决于你。