7

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または別の方法で可能ですか?

4

5 に答える 5

4

Sharp2Jsを試すことができます。型を渡すと、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まだ若いので機能が豊富ではありません (提案は歓迎します)。

于 2015-10-23T02:10:53.770 に答える
1

私は古い質問を否定していることを知っていますが、最近はいくつかのオプションがあります.

ノックアウト ビューモデルを作成する Visual Studio 用ノックアウト ジェネレーターへのクラスがあります。また、Typescript を使用する場合は、クラスで Web Essentials の「Generate Typescript」オプションを使用すると、多くのことができます。

于 2015-01-22T14:25:01.553 に答える
1

はいといいえ。しかし、「はい」よりも「いいえ」の方が多いです。

.NET クラスから JavaScript クラスを直接作成するものはありません。@jbabey のリンクにあるように、データをやり取りすることはできますが、それらを同じ意味で使用することはできません。

リフレクションを使用してすべてのパブリック プロパティとコンストラクターを反復処理することにより、レンダリング時にページにクラスを書き込む C# コードを記述できます(反対側で JSON をオブジェクトに変換できるようにします)。それらの間で機能をコピーすることはできません。

于 2013-02-12T21:59:39.407 に答える