리플렉션과 애트리뷰트

sz L·2023년 4월 12일
0

씨샵

목록 보기
13/17
post-thumbnail
post-custom-banner

리플렉션

  • Object 형식의 GetType()메소드
    - 모든 형식을 들여다 볼 수 있는 장치

C#에선

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

위 3개지 기능을 제공하는 "리플렉션"이 존재

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Threading.Tasks;

namespace ConsoleApplication43
{
    class Animal
    {
        public int age;
        public string name;

        public Animal(string name, int age)
        {
            this.age = age;
            this.name = name;
        }
        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.WriteLine("\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();
        }
    }
}


애트리뷰트

코드에 대한 부가 정보를 기록하고 읽을 수 있는 기능
클래스나 메소드에 대한 구분을 하기 위한 표시 데이터
주석 : 사람이 읽고 쓰는 정보
애트리뷰트 : 사람이 작성하고 컴퓨터가 읽는 정보

사용형식

[ 애트리뷰트_이름( 애트리뷰트_매개변수) ]
public void MyMethod()
{
	// ...
}
profile
가랑비는 맞는다 하지만 폭풍은 내 것이야
post-custom-banner

0개의 댓글