为Javascript库创建C#封装器

4
我正在寻找一种自动化的方法来创建一个简单的C#包装器,用于现有的JavaScript库。我想使用服务器上的C#类创建JavaScript字符串,然后将JavaScript发送到客户端。
例如:我正在使用KendoUI JavaScript库创建图表。我正在服务器端创建渲染图表的JavaScript,因为一个页面可以根据用户选择的配置无限地渲染许多图表。
服务器端生成的JavaScript字符串如下(为了示例而大大简化):
function createChart() {
    $("#chart").kendoChart({
        title: {
            text: "Chart Title",                        
        },                   
        series: [{
            field: "Cost"
        }],                   
        categoryAxis: {
            field: "StartDate",
        }                    
    });
}

现在我的C#代码只是构建一个字符串来创建JavaScript字符串(为了简化示例而大大简化):

private string CreateChartJS(string ChartTitle, string SeriesField, string CategoryField)
{
    return "function createChart() { $(\"#chart\").kendoChart({ title: { text: \""+ChartTitle+"\", },     series: [{ field: \""+SeriesField+"\" }], categoryAxis: { field: \""+CategoryField+"\", } }); } ";
}

我需要的是一种转换/生成工具,可以自动从我使用的JavaScript库源代码创建一个简单的C#包装类。我很清楚Telerik已经为ASP.NET制作了一个版本的图表,其中包括自定义的服务器端包装器,但这不是我要找的,因为我只是以KendoUI为例。
在Chrome网页开发者工具控制台中,我可以检查创建的KendoUI图表并查看其所有属性:
需要的工具应该能够从上面截图中公开的属性(在本例中,我要配置的属性组是“选项”对象的子项)中创建一个简单的C#类。
以下是生成的C#类的示例(仅供参考):
public class KendoChartWrapper
{    
    public class options
    {
        public bool autoBind { get; set; }
        public class axisDefaults { }
        public class categoryAxies { }
        public class chartArea { }
        public class dataSource { }
        public class legend { }
        public string name { get; set; }
        public class navigator { }
        public class plotArea { }
        public string prefix { get; set; }
        public string renderAs { get; set; }
    }
}

这将允许我通过在C#中创建类的实例并序列化结果来创建我的图表JavaScript。我正在寻找的东西应该能够根据任何javascript库的源代码(例如:jQuery,jQuery UI等)创建这些简单的C#类。
我猜已经有现有的工具可以做到这一点,我只是不知道它叫什么。我希望有人能指点我正确的方向。
2个回答

1

您是否只需要将选项作为JavaScript对象传递?如果只需要选项,则可以在服务器上使用以下方法将对象序列化为JSON:

string json = Newtonsoft.Json.JsonConvert.Serialize(YourObject)

当你在 JavaScript 端接收到这个信息时,你可以将其转换为 JavaScript 对象,并使用以下方式将其用于图表选项:

var options = JSON.parse(json);
$("#chart").kendoChart(options);

现代浏览器可用,旧浏览器可以使用替代方案


我想要相反的结果。我想要自动生成一个包含JavaScript代码对象属性的C#类。我已经知道如何进行序列化。 - Sevin7

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接