从C#类到JavaScript等效类的自动代码生成
我想公开一个我用C#编写的类,直到javascript等价物 例如,我有一个类,如:从C#类到JavaScript等效类的自动代码生成,c#,javascript,code-generation,json.net,C#,Javascript,Code Generation,Json.net,我想公开一个我用C#编写的类,直到javascript等价物 例如,我有一个类,如: // C# class to represent an Appriaser public class Appraiser { public Appraiser(appraiserId, appraiserName) { AppraiserId = appraiserId; AppraiserName = appraiserName; } pub
// C# class to represent an Appriaser
public class Appraiser
{
public Appraiser(appraiserId, appraiserName)
{
AppraiserId = appraiserId;
AppraiserName = appraiserName;
}
public int AppraiserId { get; set; }
public string AppraiserName { get; set; }
}
我希望能够用javascript自动生成这个类的一个版本
// javascript class to represent an Appraiser
function Appraiser(appraiserId, appraiserName) {
var self = this;
self.appraiserid= appraiserId;
self.appraisername= appraisername;
}
这在JSON.NET或其他方法中可能吗?是和否。但更多的是“否”而不是“是”
没有任何东西可以直接从.NET类创建javascript类。您可以来回传递数据,这就是@jbabey的链接,但您不能互换使用它们
您可以编写C#代码,在呈现类时将类写入页面(以便您可以将JSON转换回另一端的对象)通过使用反射来迭代所有公共属性和构造函数,但您仍然无法在它们之间复制功能。您可以尝试。它将允许您从.Net IL转换为JavaScript。发现Nik Hilk有一个名为Script的项目,该项目将从C#2.0代码。这有效地解决了我关于将简单C#类转换为javascript组件的问题。真正巧妙的是脚本#也可以很好地与jQuery和我的淘汰视图模型配合使用!:-)
我知道我在问一个老问题,但现在有一些选择 VisualStudio有一个为您创建淘汰视图模型的工具。另外,如果您进入Typescript-使用Web Essentials“生成Typescript”“一门课上的选项会让你有很多路要走。你可以试试。您向它传递一个类型,它将其转换为C#字符串。如果希望将其输出到js文件,请将其与
T4
模板一起使用。对于示例中的类,它生成:
将其与您的示例一起使用:
var str = Castle.Sharp2Js.JsGenerator.
GenerateJsModelFromTypeWithDescendants(typeof(Appraiser), true, "example");
产出:
example = {};
example.Appraiser = function (cons, overrideObj) {
if (!overrideObj) { overrideObj = { }; }
if (!cons) { cons = { }; }
var i, length;
this.appraiserId = cons.appraiserId;
this.appraiserName = cons.appraiserName;
this.$merge = function (mergeObj) {
if (!mergeObj) { mergeObj = { }; }
this.appraiserId = mergeObj.appraiserId;
this.appraiserName = mergeObj.appraiserName;
}
}
注意:我是
sharp2Js
的维护者,它还很年轻,所以功能还不丰富(欢迎任何建议),但它可能适合您简单使用的需要。看,我想有人可能会使用Swagger(现在的OpenAPI)来完成完全相同的事情(现在),我并不是真的在寻找复制方法的功能。我很乐意只买房子。几分钟前,我作为候选人正在看脚本,但还没有试过。由于.NET已经在C#to IL、F#to IL和VB.NET to IL中提供了类似的功能,因此我原以为C#to javascript也可以使用同样的功能。Jason,发现得好!事实上,在我发布了这个问题后,我也发现了这个项目。还是很好的发现。我真的觉得VS应该能够将C#POCOs转换为Typescript POCOs OOB。我发现Web Essentials是一个……嗯,基本的。。。要添加到Visual Studio的扩展。它拥有所有这些能力,可以获取C#类并从它们生成类型脚本定义——此外,它还可以自动处理从CSS到缩小CSS,以及从JS到缩小JS的更少处理。这是一个非常实用的工具,它可以做任何事情。我建议你试一试。我确实喜欢制作快速结构化视图模型的淘汰生成器。到目前为止,这是我发现的最好的一个shell,可以在JS内部使用。这个链接已经过时了。以下是github回购协议: