実行時に式を作成する方法

メルタ

4つのプロパティを含むクラスがあります。

class MyClass
{
    public int i{get;set;}
    public double d{get;set;}
    public string s{get;set;}
    public char c{get;set;}
}

そしてこのクラスのリスト:

var lstSource = new List<MyClass>
{
    new MyClass {i = 1, d = 1.2, s = "s1", c = '1'},
    new MyClass {i = 2, d = 2.2, s = "s2", c = '2'},
    new MyClass {i = 3, d = 3.2, s = "s3", c = '3'}
};

次に、エンドユーザーからこれらのプロパティのいくつかの名前を取得し、必要なプロパティを含む匿名タイプのリストを取得します。ユーザーは、必要なプロパティのリストを文字列のコレクション(必要なプロパティの名前)として提供します。たとえば、必要なプロパティのリストが次のようになっているとします。

var wantedProperties = new List<string> {"i", "s"};
  • 問題1:これらのプロパティのみをから取得するにはどうすればよいlstSourceですか?

  • 問題2:匿名リストの新しい変数としてすべてのプロパティのタイプを提供するにはどうすればよいですか?「wantedProperties」のすべてのアイテムについて、結果リストに別の変数を追加します。必要なプロパティのタイプを示します。この例では、結果のリストは次のようになります。

    {
        {WantedProperty1_Value = 1,WantedProperty1_Type = typeof(int)},
        {WantedProperty2_Value = 2,WantedProperty2_Type = typeof(string)}
    }
    
dcastro

まず、MyClassプロパティではなくフィールドがあります。public int i {get; set;}たとえば、これらをに変更する必要があります

これで、リフレクションを使用して、名前で識別されるプロパティのタイプを取得できます

foreach(MyClass obj in lstSource)
{
    foreach(string propertyName in wantedProperties)
    {
        PropertyInfo property = typeof(MyClass).GetProperty(propertyName);

        object value = property.GetValue(obj);
        Type propertyType = property.PropertyType;
    }
}

プロパティが公開されていない場合は、の別のオーバーロードをGetProperty使用して、BindingFlags.NonPublic | BindingFlags.Instanceバインディングフラグを使用する必要あります

今、あなたがしなければならないのは結果セットを構築することです。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

作成時に時系列でFirestoreクエリを実行する方法

分類Dev

実行時にPredicate <T>を動的に作成する方法

分類Dev

Javaで実行時に動的クラスを作成する方法

分類Dev

実行時にMonoのシーケンスを作成する方法

分類Dev

実行時にDBテーブルを作成する方法

分類Dev

文字列から多次元配列を実行時に作成する方法。

分類Dev

QML、実行時にLineSeriesを作成する

分類Dev

実行時にUI要素を作成する

分類Dev

実行時に辞書を作成する

分類Dev

午後12時に実行され、午前12時まで2時間ごとに実行され、毎日同じように実行されるcron式を作成する方法は?

分類Dev

実際の作成時にスクリプトを実行する方法

分類Dev

実行時にDiscriminatorValueを取得する方法

分類Dev

JavaFx:実行時に作成する複数の TextFields を検証する方法は?

分類Dev

式を使用してVBAで名前付き範囲を作成する方法(実行時エラー438)

分類Dev

Common-LispCLOSで実行時にクラスを移植可能に作成する方法

分類Dev

実行時に異なる長さのc ++配列を作成する方法

分類Dev

ある時点での素朴な多項式評価の実行時間を正式に計算する方法

分類Dev

実行時にインターフェースを作成する方法

分類Dev

実行時にSpringBatchジョブを作成して起動する方法

分類Dev

Django:実行時に作成された動的モデルを移行する方法

分類Dev

RealityKit実行時にカスタムメッシュを作成する方法は?

分類Dev

Tomcatで実行時にhibernate.propertiesファイルを作成する方法

分類Dev

Grailsが実行時にメソッドを作成する方法Exobj.setName( "Abhay)

分類Dev

実行時にTComboboxを作成するためのより高速な方法

分類Dev

Python 実行時にクラスのメソッドを作成する方法

分類Dev

実行時にコントロールを作成するOOPの方法は?

分類Dev

実行時にphp拡張機能を実行する方法

分類Dev

毎日午前10時と午後10時に実行されるWindowsサービスを作成する方法

分類Dev

実行時に動的にクラスを作成する

Related 関連記事

  1. 1

    作成時に時系列でFirestoreクエリを実行する方法

  2. 2

    実行時にPredicate <T>を動的に作成する方法

  3. 3

    Javaで実行時に動的クラスを作成する方法

  4. 4

    実行時にMonoのシーケンスを作成する方法

  5. 5

    実行時にDBテーブルを作成する方法

  6. 6

    文字列から多次元配列を実行時に作成する方法。

  7. 7

    QML、実行時にLineSeriesを作成する

  8. 8

    実行時にUI要素を作成する

  9. 9

    実行時に辞書を作成する

  10. 10

    午後12時に実行され、午前12時まで2時間ごとに実行され、毎日同じように実行されるcron式を作成する方法は?

  11. 11

    実際の作成時にスクリプトを実行する方法

  12. 12

    実行時にDiscriminatorValueを取得する方法

  13. 13

    JavaFx:実行時に作成する複数の TextFields を検証する方法は?

  14. 14

    式を使用してVBAで名前付き範囲を作成する方法(実行時エラー438)

  15. 15

    Common-LispCLOSで実行時にクラスを移植可能に作成する方法

  16. 16

    実行時に異なる長さのc ++配列を作成する方法

  17. 17

    ある時点での素朴な多項式評価の実行時間を正式に計算する方法

  18. 18

    実行時にインターフェースを作成する方法

  19. 19

    実行時にSpringBatchジョブを作成して起動する方法

  20. 20

    Django:実行時に作成された動的モデルを移行する方法

  21. 21

    RealityKit実行時にカスタムメッシュを作成する方法は?

  22. 22

    Tomcatで実行時にhibernate.propertiesファイルを作成する方法

  23. 23

    Grailsが実行時にメソッドを作成する方法Exobj.setName( "Abhay)

  24. 24

    実行時にTComboboxを作成するためのより高速な方法

  25. 25

    Python 実行時にクラスのメソッドを作成する方法

  26. 26

    実行時にコントロールを作成するOOPの方法は?

  27. 27

    実行時にphp拡張機能を実行する方法

  28. 28

    毎日午前10時と午後10時に実行されるWindowsサービスを作成する方法

  29. 29

    実行時に動的にクラスを作成する

ホットタグ

アーカイブ