我正在设计一个应用程序,它需要在运行时创建一些C#类。我希望能够将这些类转换为javascript等价物。例如,我可能有一个C#类,它看起来像
public class Person
{
public int Score { get; set; }
public bool IsScoreValid()
{//code in real implementation would be more complex and make use of various properties
return Score > 0 && Score <= 100;
}
}这里的诀窍是,这里的Person类将根据某些配置在运行时创建。我无法控制IsScoreValid方法中的代码,而且在应用程序运行时它可能会改变。我只知道它是有效的C#代码。我需要一种健壮的方法来将该类转换为类似的javascript,并且我需要能够在运行时执行这种转换。Bridge.net是转换这个javascript的好方法吗?Bridge.net编译器可以在运行时调用吗?
发布于 2018-08-22 18:11:55
如果可能的话?确实是这样,参见http://deck.net/。但不幸的是,该项目不是开源的。基本上,它是一个直接调用具有正确参数的Bridge.Translator.Translate()方法来构建文件的项目。
实现实时桥编译的web项目需要能够处理服务器端的调用,比如Asp.NET中的webservices (ashx),但是您也可以通过cgi-bin或linux/osx中的php来实现这一点,如果您进行命令行调用,或者连接包装器直接调用Bridge.Translator,则使用桥CLI。不过,要在Linux/osx上将其与Bridge.Translator链接起来,这需要是一个具有Mono功能的二进制文件。
虽然deck.net项目没有打开,但是桥本身是打开的,所以您可以完全访问如何从Bridge.Builder或桥CLI打开的项目调用桥的转换()方法。
但是,如果您希望代码不关心引用,比如缺少定义或IsScoreValid()的原型,那么使用桥将是一个问题。在接受调用之前,它至少需要对方法进行原型化和标记External;由于代码树是通过roslyn构建的,所以c#代码必须是完整的和可构建的。(否则,我们能称它为适当的C#吗?也许,在你的例子中,你并不需要完全成熟的C#)
https://stackoverflow.com/questions/51970616
复制相似问题