46.10 Type 클래스로 클래스의 멤버 호출하기

    이번에는 Type 클래스로 특정 클래스의 멤버를 호출하는 방법을 알아보겠습니다. 다음 내용을 입력한 후 실행해 보세요.

    Type 클래스로 클래스의 멤버 호출: ReflectionGetMethod.cs

    using System;
    using System.Reflection;
    
    namespace ReflectionGetMethod
    {
        public class MemberClass
        {
            public string Name { get; set; } = "길벗출판사";
            public string GetName()
            {
                return Name + ", " + DateTime.Now.ToShortTimeString();
            }
        }
        class ReflectionGetMethod
        {
            static void Main()
            {
    
                //① 리플렉션 기능으로 특정 클래스의 멤버를 동적으로 호출
                MemberClass m = new MemberClass();
                Type t = m.GetType();
    
                //ⓐ 속성 읽어 오기 및 속성 호출
                PropertyInfo pi = t.GetProperty("Name"); //Name 속성
                Console.WriteLine("속성 호출 : {0}", pi.GetValue(m));
    
                //ⓑ 메서드 읽어 오기 및 메서드 호출
                MethodInfo mi = t.GetMethod("GetName"); //GetName 메서드
                Console.WriteLine("메서드 호출 : {0}", mi.Invoke(m, null));
    
                //② 참고: C# 4.0 이상에서는 dynamic 개체로 쉽게 멤버를 동적으로 호출
                dynamic d = new MemberClass(); //dynamic 키워드로 동적 개체 생성
                Console.WriteLine("속성 호출 : {0}", d.Name);        //속성 호출
                Console.WriteLine("메서드 호출 : {0}", d.GetName()); //메서드 호출
            }
        }
    }

    실행 결과

    속성 호출 : 길벗출판사
    메서드 호출 : 길벗출판사, 오전 1:29
    속성 호출 : 길벗출판사
    메서드 호출 : 길벗출판사, 오전 1:29

    처럼 GetProperty() 메서드로 특정 속성 정보를 얻은 후 GetValue() 메서드로 속성 값을 동적으로 호출할 수 있습니다.

    처럼 GetMethod() 메서드로 특성 메서드 정보를 얻은 후 Invoke() 메서드로 동적으로 메서드를 호출할 수 있습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.