Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#类到JavaScript等效类的自动代码生成_C#_Javascript_Code Generation_Json.net - Fatal编程技术网

从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#编写的类,直到javascript等价物

例如,我有一个类,如:

// 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回购协议: