C#ディクショナリで定義されたタイプをインポートするにはどうすればよいですか?

コリンウルツ

importsオブジェクトのプロパティがディクショナリであり、その値がカスタムタイプである場合にを生成する方法を理解するのに苦労しています。

私のDTO / C#クラスは以下に定義されています。.tstファイルのインポート関数は、インポートStatus方法と同様にタイプをインポートする必要があることを認識していませんProjectDTO

.tstファイル内の辞書の値のタイプを取得する方法はありますか?

C#ファイル

[TypeScript]
public class ActiveProjectsViewModel
{
    public List<ProjectDTO> Projects { get; set; }

    public Dictionary<int,Status> Statuses { get; set; }

    public bool EditModeAvailable { get; set; }
}

.tstファイル

 ${
string Imports(Class c)
        {
            var props = c.Properties.Where(p=>!p.Attributes.Any(a => String.Equals(a.name, "TypeScriptIgnore", StringComparison.OrdinalIgnoreCase)));

            IEnumerable<Type> types = props
                .Select(p => p.Type)
                .Where(t => !t.IsPrimitive || t.IsEnum)
                .Select(t => t.IsGeneric ? t.TypeArguments.First() : t)
                .Where(t => !t.Attributes.Any(a => String.Equals(a.name, "TypeScriptIgnore", StringComparison.OrdinalIgnoreCase)))
                .Distinct();

            return string.Join(Environment.NewLine, types.Select(t => $"import {{ {t.Name} }} from './{t.Name}';").Distinct());
        }
    }

    $Classes()[
    $Imports

    export class $Name {
        $Properties($PropertyIsNotIgnored)[        
        public $name: $Type = $Type[$Default];]
        $BaseClass[$Properties($PropertyIsNotIgnored)[
        public $name: $Type = $Type[$Default];]]
    }]


    $Enums(*)[
    export enum $Name {
        $Values[
        $Name = $Value][,]
    }]

このファイルを生成します:

import { ProjectDTO } from './ProjectDTO';

export class ActiveProjectsViewModel {

    public projects: ProjectDTO[] = [];        

    public statuses: { [key: number]: Status; } = {};        

    public editModeAvailable: boolean = false;

}
コリンウルツ

https://github.com/frhagn/Typewriter/issues/282投稿されたTypewriterの作成者から、辞書で定義されているタイプは、以下のアプローチを使用して導出できるようです。

このSelectMany行が追加された重要なものでした。

string Imports(Class c)
{
    var props = c.Properties.Where(p => !p.Attributes.Any(a => String.Equals(a.name, "TypeScriptIgnore", StringComparison.OrdinalIgnoreCase)));

    IEnumerable<Type> types = props
        .Select(p => p.Type)
        .SelectMany(t => t.IsGeneric ? t.TypeArguments : new[] { t } as IEnumerable<Type>)
        .Where(t => !t.IsPrimitive || t.IsEnum)
        .Where(t => !t.Attributes.Any(a => String.Equals(a.name, "TypeScriptIgnore", StringComparison.OrdinalIgnoreCase)))
        .Distinct();

    return string.Join(Environment.NewLine, types.Select(t => $"import {{ {t.Name} }} from './{t.Name}';").Distinct());
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リソースディクショナリでデータテンプレートをバインドするにはどうすればよいですか

分類Dev

タイプスクリプトでオプションパーシャルを定義するにはどうすればよいですか?

分類Dev

.NETアプリケーションの事前定義されたuserconfigディレクトリを変更するにはどうすればよいですか?

分類Dev

制約されたジェネリック型を持つアクションデリゲートをC#のタイプセーフコレクションに格納するにはどうすればよいですか?

分類Dev

Spark Javaアプリケーション用に自動的に定義されたポートを取得するにはどうすればよいですか?

分類Dev

データバインディングとナビゲーションコンポーネントを使用してネストされたビューにアクセスするにはどうすればよいですか?

分類Dev

スクリプトで定義されたタイプのメンバーにアクセスするにはどうすればよいですか?

分類Dev

テキストファイルからデータをインポートするときにPythonディクショナリの値をインクリメントするにはどうすればよいですか?

分類Dev

xorgグラフィックデバイスのデフォルトオプションを定義するにはどうすればよいですか

分類Dev

c ++プログラムをコンパイルすると、バイナリがバイナリディレクトリに配置されるようにシェルスクリプトを作成するにはどうすればよいですか。

分類Dev

アプリケーションディレクトリで生成されないように、サードパーティコンポーネントのDCUファイルを作成するにはどうすればよいですか?

分類Dev

Cで定義されたタイプのノードに隣接リストを追加するにはどうすればよいですか?

分類Dev

クライアントマシンにアプリケーションをデプロイするために接続文字列にデータディレクトリを追加するにはどうすればよいですか?

分類Dev

Signalを使用してPythonディクショナリをQMLインターフェイスに送信するにはどうすればよいですか?

分類Dev

Clionで静的ライブラリにリンクされたアプリケーションにブレークポイントを設定するにはどうすればよいですか?

分類Dev

シャイニーのggvisプロットでクリックされたポイントを参照するにはどうすればよいですか

分類Dev

Javaリフレクションを使用してクラスで定義されたすべてのインポートを取得するにはどうすればよいですか?

分類Dev

ターミナル(デスクトップ環境なし)でコンポーズキーを定義するにはどうすればよいですか?

分類Dev

サブディレクトリにモジュールのタイプ定義を追加するにはどうすればよいですか?

分類Dev

Pythonディクショナリのアイテムをランダムな順序でループするにはどうすればよいですか?

分類Dev

値ディクショナリの長さに基づいてネストされたディクショナリをソートすることにより、ソートされたdictを作成するにはどうすればよいですか?

分類Dev

Accessからインポートされたデータからリストのグループを作成するにはどうすればよいですか?

分類Dev

他のインポートされたコンポーネントからデータを設定/取得するにはどうすればよいですか?

分類Dev

NAN値を表示せずに、ディクショナリから作成されたデータフレームのインデックスと列を変更するにはどうすればよいですか?

分類Dev

JPAネイティブクエリを使用してポイントタイプデータを更新するにはどうすればよいですか?

分類Dev

KubernetesにデプロイされたTomcatで実行されているアプリケーションにアクセスするようにk8sを設定するにはどうすればよいですか?

分類Dev

CSVを介してAWSNeptuneにインポートされたVertexプロパティのシングルカーディナリティを調整するにはどうすればよいですか?

分類Dev

プリコンパイルされたC#Azure関数で命令型バインディングを使用する場合、Cosmos DBデータベースとコレクション名をどのように定義しますか?

分類Dev

フィルタリングされたパンダシリーズのインデックスを取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    リソースディクショナリでデータテンプレートをバインドするにはどうすればよいですか

  2. 2

    タイプスクリプトでオプションパーシャルを定義するにはどうすればよいですか?

  3. 3

    .NETアプリケーションの事前定義されたuserconfigディレクトリを変更するにはどうすればよいですか?

  4. 4

    制約されたジェネリック型を持つアクションデリゲートをC#のタイプセーフコレクションに格納するにはどうすればよいですか?

  5. 5

    Spark Javaアプリケーション用に自動的に定義されたポートを取得するにはどうすればよいですか?

  6. 6

    データバインディングとナビゲーションコンポーネントを使用してネストされたビューにアクセスするにはどうすればよいですか?

  7. 7

    スクリプトで定義されたタイプのメンバーにアクセスするにはどうすればよいですか?

  8. 8

    テキストファイルからデータをインポートするときにPythonディクショナリの値をインクリメントするにはどうすればよいですか?

  9. 9

    xorgグラフィックデバイスのデフォルトオプションを定義するにはどうすればよいですか

  10. 10

    c ++プログラムをコンパイルすると、バイナリがバイナリディレクトリに配置されるようにシェルスクリプトを作成するにはどうすればよいですか。

  11. 11

    アプリケーションディレクトリで生成されないように、サードパーティコンポーネントのDCUファイルを作成するにはどうすればよいですか?

  12. 12

    Cで定義されたタイプのノードに隣接リストを追加するにはどうすればよいですか?

  13. 13

    クライアントマシンにアプリケーションをデプロイするために接続文字列にデータディレクトリを追加するにはどうすればよいですか?

  14. 14

    Signalを使用してPythonディクショナリをQMLインターフェイスに送信するにはどうすればよいですか?

  15. 15

    Clionで静的ライブラリにリンクされたアプリケーションにブレークポイントを設定するにはどうすればよいですか?

  16. 16

    シャイニーのggvisプロットでクリックされたポイントを参照するにはどうすればよいですか

  17. 17

    Javaリフレクションを使用してクラスで定義されたすべてのインポートを取得するにはどうすればよいですか?

  18. 18

    ターミナル(デスクトップ環境なし)でコンポーズキーを定義するにはどうすればよいですか?

  19. 19

    サブディレクトリにモジュールのタイプ定義を追加するにはどうすればよいですか?

  20. 20

    Pythonディクショナリのアイテムをランダムな順序でループするにはどうすればよいですか?

  21. 21

    値ディクショナリの長さに基づいてネストされたディクショナリをソートすることにより、ソートされたdictを作成するにはどうすればよいですか?

  22. 22

    Accessからインポートされたデータからリストのグループを作成するにはどうすればよいですか?

  23. 23

    他のインポートされたコンポーネントからデータを設定/取得するにはどうすればよいですか?

  24. 24

    NAN値を表示せずに、ディクショナリから作成されたデータフレームのインデックスと列を変更するにはどうすればよいですか?

  25. 25

    JPAネイティブクエリを使用してポイントタイプデータを更新するにはどうすればよいですか?

  26. 26

    KubernetesにデプロイされたTomcatで実行されているアプリケーションにアクセスするようにk8sを設定するにはどうすればよいですか?

  27. 27

    CSVを介してAWSNeptuneにインポートされたVertexプロパティのシングルカーディナリティを調整するにはどうすればよいですか?

  28. 28

    プリコンパイルされたC#Azure関数で命令型バインディングを使用する場合、Cosmos DBデータベースとコレクション名をどのように定義しますか?

  29. 29

    フィルタリングされたパンダシリーズのインデックスを取得するにはどうすればよいですか?

ホットタグ

アーカイブ