概要
ASP.net を利用しているときに C# で dto を作って、それと全く同じ定義の typescript の dto を定義することがあると思います。
そんな面倒なソースを書くぐらいなら C# の定義から自動的に作ってくれたほうがいいよね、ということで C# の dll を指定して interface に変換するライブラリを作りました。
NrsLib.CSharpToTypescriptInterface
github: https://github.com/nrslib/NrsLib.CSharpToTypescriptInterface
nuget: https://www.nuget.org/packages/NrsLib.CSharpToTypescriptInterface/
解説
dll を指定すると C# の public フィールドとプロパティを typescript のフィールドとして出力します。
使い方
Sample プロジェクトの Program.cs を見るのがわかりやすいです。
基本的に dll を指定して実行するだけです。
第二引数は Type と string を受け取るメソッドで、一つの型が typescript の interface の文字列に変換される度に呼び出されます。
このメソッドの結果が戻り値の配列の型になるので最終的な結果の型を戻すようなメソッドを与えてください。
この例の場合は Tuple
ちょっと凝った使い方についてはこの後記述しますが、基本的には Sample プロジェクトを見ればできることがわかるかと思います。
拡張
Type の変換方法や変換対象の抽出方法などを自由に変更できるようにしてあります。
変換方法
Type の変換方法は ITypeAdjuster を実装して変更します。
ITypeAdjuster は以下のように実装します。
ToTypescriptType で引数に対して変換後の文字列を戻します。
今回はすべて any にしてみました。
使い方は↓のように setter で設定してあげてください。
対象選択方法
変換する Type の指定方法は ITypeExtractor を実装して変更します。
このコードの場合は NameSpace が TestDll.TestNameSpace で始まるクラスだけが抽出されます。
こちらもこのまま setter で設定します。
デフォルト実装
Type 変換は DefaultTypeAdjuster です。これに従って戻り値や引数の型の変換が行われます。
変換する対象については EveryExtractor が利用されています。もちろん初期状態ではすべてが選択されます。
フィールドとプロパティの選択条件に付いてはそれぞれ public であるかどうかを条件として出力しています。
これらは使用するプロジェクトによって設定を作って Injection して利用してください。
特に型の変換方法については足りないものが多い状態なので随時追加していきますが、必要であれば DefaultTypeAdjuster に自作の Spec を追加するなどして対応してください。