从C#类到JavaScript等效的自动代码生成

Mr.*_*ung 6 javascript c# code-generation json.net

我想将我用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; }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够在javascript中自动生成此类的一个版本

// javascript class to represent an Appraiser
function Appraiser(appraiserId, appraiserName) {
    var self = this;
    self.appraiserid= appraiserId;
    self.appraisername= appraisername;
}
Run Code Online (Sandbox Code Playgroud)

这可能与JSON.NET或其他方法有关吗?

Gra*_* H. 5

你可以尝试Sharp2Js。您向它传递一个类型,它会将其转换为 C# 字符串。T4如果您希望它输出到 js 文件,请将其与模板一起使用。对于您示例中的类,它会生成:

将其与您的示例一起使用:

var str = Castle.Sharp2Js.JsGenerator.
              GenerateJsModelFromTypeWithDescendants(typeof(Appraiser), true, "example");
Run Code Online (Sandbox Code Playgroud)

输出:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:我是 的维护者sharp2Js,它还很年轻,所以功能还不丰富(欢迎任何建议),但它可能适合您简单使用的需求。


Jas*_*son 1

我知道我正在解决一个老问题,但现在有几个选择。

Visual Studio有一个用于淘汰赛生成器的类,它将为您创建淘汰赛视图模型。另外,如果您开始使用 Typescript - 在课程上使用 Web Essentials 的“生成 Typescript”选项将会帮助您取得很多进展。