我有一个Node.js进程,它生成一个子REPL进程。这个子进程说C#并能够动态加载DLL文件。我使用任一种方法或有时使用Proxy()将输入发送到REPL。 REPL的stdout被发送回我的对象,然后使用常见的obj.on(数据,函数)实现来捕获。当我在对象上调用一个方法时,它会将它传递给子进程stdin。
这一切都像魅力,我可以加载任何.NET或第三方程序集,并将其类型和方法暴露给Node。虽然非常有效,但就这样本能地感觉非常难看。
除了Windows之外,它不必使用其他平台。
这是不良做法'?如果是这样,为什么会这样呢?有什么不好的?你会怎样做得更好?
编辑:我不是在寻找另一种方式,但我想回答一下我现在大胆的问题。
答案 0 :(得分:0)
如果您需要在任一方向上在节点和.NET之间进行互操作,那么就会有edge.js项目,这可能是您正在寻找的东西。目前,从节点访问CLR是跨平台的(Windows,Linux,OS X)。