[Unity]/[C#]

[C#] reflection

극꼼 2022. 10. 5. 20:07
반응형


<reflection>

: 프로그램 실행 도중 객체의 정보를 조사하거나, 다른 모듈에 선언된 인스턴스를 생성하거나, 기존 개체에서 형식을 가져오고 해당하는 메서드를 호출, 또는 해당 필드와 속성에 접근할 수 있는 기능을 제공합니다.

 

Type.GetConstructors() : 모든 public 생성자 가져옴 -> 괄호 안에 매개변수 타입이 찍힘

Type.GetMethods() : 해당 형식의 메서드 목록을 가져옴

Type.GetFields() : 해당 형식의 필드 목록을 가져옴

 

* 사용 예시

using System.Reflection;
class Animal
{
    public int age;
    public string name;
    public Animal(string name, int age)
    {
        this.name = name;
        this.age = age;
    }
    public void eat()
    {
        Console.WriteLine("먹는다!");
    }
    public void sleep()
    {
        Console.WriteLine("잔다!");
    }
}
class Program
{
    static 
        void Main(string[] args)
    {
        Animal animal = new Animal("고양이", 4);
        Type type = animal.GetType();
        ConstructorInfo[] coninfo = type.GetConstructors();
        
        Console.Write("생성자(Constructor) : ");
        foreach (ConstructorInfo tmp in coninfo)
        {
            Console.Write("\t{0}", tmp);
        } Console.WriteLine();

        MemberInfo[] meminfo = type.GetMethods();
        
        Console.Write("메소드(Method) : ");
        foreach (MethodInfo tmp in meminfo)
        {
            Console.Write("\t{0}", tmp);
        } Console.WriteLine();

        FieldInfo[] fieldinfo = type.GetFields();
        
        Console.Write("필드(Field) : ");
        foreach (FieldInfo tmp in fieldinfo)
        {
            Console.Write("\t{0}", tmp);
        } Console.WriteLine();
    }
}

* 출력된 내용 : 

 

반응형

'[Unity] > [C#]' 카테고리의 다른 글

[C#] 제네릭(Generic)  (0) 2022.10.07
[C#] readonly 한정자 (feat.const 한정자)  (1) 2022.10.06
[C#] partial 클래스  (0) 2022.10.04
[C#] 일반화 프로그래밍  (2) 2022.09.30
[C#] 확장 메서드 기법  (0) 2022.09.29