reflection (4) 썸네일형 리스트형 [C# Reflection] GetValue()와 SetValue() 메서드 지난 글에서 GetField(), GetFields() 메서드를 통해 필드 정보를 FieldInfo 개체 형식으로 받아오는 방법을 알아봤다. [C# Reflection] GetField(), GetFields() 메서드와 FieldInfo 클래스 Type 클래스에 대해 GetField() 또는 GetFields() 메서드를 사용해서 타입에 속한 필드의 정보를 가져올 수 있으며 필드의 정보는 FieldInfo 클래스의 인스턴스 형태로 반환된다. 오늘은 이들에 대해 알아 cs-solution.tistory.com 이번에는 가져온 FieldInfo 개체를 사용해서 필드의 값을 읽거나 쓰는 방법을 배워본다. 1. GetValue(object) - 필드(또는 속성)의 값을 가져오기 class MyClass { p.. [C# Reflection] GetField(), GetFields() 메서드와 FieldInfo 클래스 Type 클래스에 대해 GetField() 또는 GetFields() 메서드를 사용해서 타입에 속한 필드의 정보를 가져올 수 있으며 필드의 정보는 FieldInfo 클래스의 인스턴스 형태로 반환된다. 오늘은 이들에 대해 알아보자. 먼저 GetField()와 GetFields() 등 리플렉션에서 타입에 속한 멤버를 검색해서 가져오기 위한 메서드를 사용하려면 BindingFlags에 대해 알아둘 필요가 있다. BindingFlags System.Reflection 네임스페이스에 정의되어 있는 enum으로, 검색 조건들을 열거형으로 나타낸 것이며, 비트 조합을 허용하는 Flags 특성이 적용되어 있어 비트 연산자를 사용해 여러 조건을 조합할 수 있다. 우리가 앞으로 주로 사용할 바인딩 플래그는 다음과 같다. .. [C# Reflection] Reflection이란? 리플렉션(Reflection)은 어떤 Type에 대한 정보를 가져오거나 접근하는 등의 작업을 런타임에 동적으로 수행할 수 있도록 해주는 기능이다. 리플렉션을 사용하면 런타임에서 메서드를 호출하거나 필드의 값을 바꾸는 등의 작업을 할 수 있다. 실제로 어셈블리는 미리 생성된 스크립트를 기준으로 생성이 되며, 어셈블리가 동작할 때 메서드가 호출되거나 필드의 값을 변경하는 행위는 모두 프로그래머가 어셈블리를 빌드하기 전에 스크립트에 정의해놓은 일련의 작업일 뿐이다. 예를 들어 클래스 A에 존재하는 a, b, c라는 세 개의 필드에 사용자로부터 값을 입력받아 지정하고자 한다면 프로그래머는 클래스 A의 구성 요소에 대해 알고 있고, 수행해야 할 동작들에 대해서도 이미 정의되어 있기 때문에 아래와 같이 코드를 작성.. [WinForm] 컨트롤이 깜빡거리는 현상 해결 (DoubleBuffered 속성) 컨트롤이 많은 처리를 하거나, 컨트롤에 표시되는 데이터가 짧은 시간 안에 여러 번 갱신되어야 할 때 컨트롤이 깜빡거리는 현상을 볼 수 있다. (특히 ListView나 PictureBox 등) 이러한 현상을 해결하기 Control 클래스에는 위해 컨트롤의 이중 버퍼링을 활성화하여 깜빡임을 최소화하는 DoubleBuffered 속성이 존재하는데, 이 속성은 protected로 선언되어 있기 때문에 Control 클래스를 상속받아 생성되는 컨트롤에서 DoubleBuffered 속성에 접근하기 위한 별도의 방법을 public으로 제공하지 않는다면 속성 창을 통해서, 또는 참조 변수를 통해 접근할 수 없다. 그러나 Reflection 기능을 사용해서 이 속성을 켜줄 수 있다. 아래 코드를 폼의 생성자 등 적절한 .. 이전 1 다음