반응형

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");
    }
  }
}
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기