2017-12-27 35 views
1

毎回異なるプロパティにアクセスするために、一定の時間だけデータの行をループしています。ループ内でプロパティをスルーします。

データは次のようになります。

[JsonProperty("Afbeelding")] 
    public string Afbeelding { get; set; } 

    [JsonProperty("Afbeelding_2")] 
    public string Afbeelding2 { get; set; } 

    [JsonProperty("Afbeelding_3")] 
    public string Afbeelding3 { get; set; } 

    [JsonProperty("Afbeelding_4")] 
    public string Afbeelding4 { get; set; } 

    [JsonProperty("Afbeelding_5")] 
    public string Afbeelding5 { get; set; } 

    [JsonProperty("Afbeelding_6")] 
    public string Afbeelding6 { get; set; } 

    [JsonProperty("Afbeelding_7")] 
    public string Afbeelding7 { get; set; } 

私はループでfolllowing試してみた:

var path = CreateFile(profitImageRow.("Afbeelding"+i), profitImageRow.Bestandsnaam+i); 

二つだけの値に私を追加しながら、最初のものはコンパイルされません。 "Bestandsnaam"の

この作業をループで実行する方法はありますか?

+0

[C#での反射を利用して文字列からプロパティ値を取得する(https://stackoverflow.com/questions/1196991/get-property-value-from-string-using-reflection-in-cの可能な重複-シャープ) – mjwills

答えて

0

まず、JSONはDictionary<string, string>としてデシリアライズされていて、次にKeyが_Xプロパティになり、値もそこにあるはずです。

モデルを変更できない(または変更しない)場合は、反射力を使用できます。

など。

var props = typeof(MyModel).GetProperties(BindingFlags.Instance | BindingFlags.Public).Where(x => x.Name.StartsWith("Afbeelding")); 

foreach(var prop in props) 
{ 
    var value = prop.GetValue(modelHere); //now value has the corresponding string. 
} 

// Or you can do 
for(int i =1 ; i < 8; i++){ 
    var neededProp = props.FirstOrDefault(x => x.Name == $"Afbeelding_{i}"); //now this has the value 
} 
関連する問題