윈폼(Winform)

C# Reflection(클래스의 필드명 모두 가져오고, 값 넣기)

SourceTree 2021. 11. 20. 09:20
반응형

Reflection(리플렉션) 예제

  • 클래스의 모든 필드명 가져오기
  • 가져온 필드의 타입 체크하기
  • 해당 필드에 값 넣기
//데이터 클래스
class VoData {
  public int no;
  public string data1;
  public string data2;
}
 
//클래스의 필드들 모두 가져오기
var fields = typeof(VoData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
 
//VoData 생성
VoData data = new VoData();
 
//int, string필드에 값 넣기
for(int i=0; i<fields.Length; i++) {
  //int필드 체크
  if(fields[i].FieldType == typeof(int)) {
    fields[i].SetValue(data, 999);
  }
  //string필드 체크
  else if(fields[i].FieldType == typeof(string)) {
    //필드명 체크
    if(fields[i].Name == "data1") {
      fields[i].SetValue(data, "데이터1");
    }
    else if(fields[i].Name == "data2") {
      fields[i].SetValue(data, "데이터2");
    }
  }
}
반응형