2017-12-27 51 views
1

매번 다른 속성에 액세스하기 위해 일정 시간 동안 데이터 행을 반복하려고합니다.루프 내의 속성을 통해 반복합니다.

데이터는 다음과 같습니다

나는 루프에 folllowing 시도했습니다
[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; } 

: 두 번째는 값으로 난을 추가하면서

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

첫 번째는 컴파일되지 않습니다 "Bestandsnaam"

루프에서이 작업을 수행 할 수있는 방법이 있습니까?

+0

가능한 복제 (https://stackoverflow.com/questions/1196991/get-property-value-from-string-using-reflection-in-c [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 
}