관리 메뉴

샐님은 개발중

Reflection 본문

C#

Reflection

샐님 2024. 5. 29. 09:16
728x90
반응형

Reflection : 동적으로 형식 인스턴스 생성 , 기존 개체의 메서드, 필드 및 속성에 엑세서 가능

 

1. 하고 싶은 것 : 동적으로 특정 컬럼(db에 저장했다가 데이터 끌어옴) 에 데이터를 셋팅

 2. 알아야 할것 :

1) 먼저 객체의 field에 접근할 수 있어야한다. 

2) 해당 필드와 db에 저장한 필드 명이 같으면 원하는 값을 셋팅한다. 

1. Class의 필드 정보 추출

    
    // TestModel class 에 Property를 모두 가져온다.
    PropertyInfo[] pArr = typeof(TestModel).GetProperties();
    TestModel testobject = new TestModel();


    foreach (var pInfo in pArr)
    {
      // Property의 타입, 이름 값 확인
        <div>@pInfo.Name</div>
        <div>@pInfo.PropertyType</div>
        <div>@pInfo.GetValue(testobject)</div>
    }

}

 

<결과>

 

2. 객체의 값 변경

    foreach (var pInfo in pArr)
    {
      
        // 필드의 값 변경해주기
        if (pInfo.Name.Equals("NewName"))
        {
            pInfo.SetValue(testobject, "새이름");
        }

        <div>@testobject.NewName</div>
    }

<결과>

 

3.  동적으로 특정 필드에 특정 값을 셋팅

  for(var i=0; i<pArr.Length; i++)
  {
      pArr[i].SetValue(testobject, "동적할당");
      <div>@pArr[i].Name</div>
      <div>@pArr[i].GetValue(testobject)</div>
  }

 

<결과>

728x90
반응형

'C#' 카테고리의 다른 글

Tree 구조 데이터 바인딩  (0) 2024.12.04
ASP.NET CORE JWT Clean Architecture  (1) 2024.07.10
ExpandoObject() 동적 객체 생성  (0) 2024.06.28
PropertyInfo.SetValue 메소드  (0) 2024.04.29
컴파일러 오류 CS0176  (0) 2024.04.01