簡単なものしか作る気が無かったので半日で終わらせるつもりが、何日も掛かってしまったけれど、やっとCodeplexでPublishできた。(Apache 2.0ライセンスのOSSになっている)
Simple TypeScript and C# Class Generator
説明 §
要するにGUIでシンプルなクラスの設定を作って、生成ボタンを押すとC#とTypeSriptのソースを生成してくれるだけです。サーバ側のC#プロジェクトにC#のコードを入れておき、クライアント側にTypeSriptのコードを入れておくと、JSONでデータをサーバからクライアントに送れます。
VS2013のASP.NETのWeb APIプロジェクトでの使用を想定していて、APIのコントローラーでオブジェクトを返すとそれがJSONシリアライズされて飛んでいきます。
クライアント側はそれを受け取ると、そのまま同じクラスのTypeScript定義の変数に入れることができます。
詳しい説明はCodeplexのサイトの表紙に書いておきました。
実際に転送するサンプルソースはCodeplexのソースツリーの一部にあります。
解説あるいはぼやき §
あまりにもクラスの構造が違いすぎて、CS→TSもTS→CSも現実的ではなくて、JSONシリアライズによる情報交換用に限定してGUIで設定を作るツールにしてしまった。あまり綺麗ではないけどね。
だからprivateなメンバーなどは作れません。メソッドも作れません(実装が別物になるから)。
internalやprotectedなメンバーを作れない理由はちょっと違っていて、C#にはあるがTypeScriptには無いから。int型のメンバーを作れないのも同じで、TypeScript側に無いから。
さて、時間が掛かった理由は3つ。
- 誤認バグ
- アップロードできないCodeplexのWiki
- めんどくさくなった
誤認バグとは、バグだと思ってConnectにレポートしたら仕様だった件。説明されればなるほどその通り。
アップロードできないCodeplexのWikiは、IE11やめてChromeにしたらすぐ通ったので、なんでや~という感じ。
めんどくさくなったといのは、読んでその通り。
たぶん、JavaScriptやめてTypeScriptに乗り換える人は多いと思いますが、C#やめてTypeScriptに乗り換える人は少ないと思うので、C#+TypeScriptのプロジェクトはそこそこ多くなりそう。だから、ちょっとはニーズがあるかな。
FAQ §
- Q: なぜCopyまでで、ファイルを生成しないのですか? A:使われ方はいろいろだと思うし、チェックイン済みでロック状態のソースへの上書きは失敗するから
- Q: XX機能がありません A:あらゆる機能には対応していないよ
- Q: XX機能を追加してください A:ソース公開しているのだから自分で書き換えれば良いと思います
- Q: 自分もコード書いてもっと強化したい A:連絡ください。Codeplex上で開発メンバーに追加することはできます
- Q: 開発費用を寄付したい A:歓迎します