0

次のような何らかの反射を行う必要があります。

  1. オブジェクトからすべてのプロパティ名を取得し、Role という単語が付いているものだけを選択します。
  2. すべてのプロパティを取得したら、 を作成しますList<KeyvaluePair<string,string>>。ここで、キーはプロパティ名になり、値はオブジェクト プロパティから取得されます。

これは、linq やラムダ式を使用して簡単に実行できると思いますが、方法がわかりません。

私がこれまでに持っているコードは次のとおりです。

SyncJobs_Result job = (SyncJobs_Result)entity.Entity;
var properties = typeof(SyncJobs_Result ).GetProperties(BindingFlags.Static | BindingFlags.Public).Select(p => p.Name.Contains("Role"));

これから List> を作成するにはどうすればよいですか? キーは列またはプロパティ名で、値はプロパティ値です

4

1 に答える 1

3
SyncJobs_Result job = (SyncJobs_Result)entity.Entity;
var properties = typeof(SyncJobs_Result)
    .GetProperties(BindingFlags.Static | BindingFlags.Public)
    .Where(p => p.Name.Contains("Role") && p.PropertyType == typeof(string))
    .Select(p => new KeyValuePair<string, string>(p.Name, p.GetValue(job, null) as string))
    .ToList();

Visual Studio を使用せずに記述しているため、1 つまたは 2 つの構文エラーが発生する可能性がありますが、これが正しい方向を示していることを願っています。

于 2013-06-26T11:23:33.770 に答える