[Unity][C#] Type의 대한 이해(2)

Yoo Hyung Joo ·2023년 10월 17일
0

Unity Custom BehaviourTree Editor를 만들게 되면서 리플렉션을 활용한 클래스 리스트를 가져오는 함수가 필요하였다. 그래서 리플렉션을 이용해 클래스 리스트를 가져오는 함수를 만들어봤다.

        private static List<Type> GetDerivedClasses<T>() where T : BTBrain
        {
            Type baseType = typeof(T);
            Assembly assembly = Assembly.GetExecutingAssembly(); // 현재 어셈블리에서 클래스를 찾음
            List<Type> derivedClasses = assembly.GetTypes()
                .Where(type => baseType.IsAssignableFrom(type))
                .ToList();
            return derivedClasses;
        }

Type.IsAssignableFrom(Type)

정의
네임스페이스:
System
어셈블리:
netstandard.dll
지정한 c 형식의 인스턴스를 현재 형식의 변수에 할당할 수 있는지 여부를 결정합니다.

이 함수는 매개변수로 들어온 Type이 현재 타입에 대입할 수 있냐를 확인해주는 함수이다.
=> boolean 으로 반환

ex)
BTBrain을 상속받은 SampleBrain을 기준으로 SampleBrain.IsAssignableFrom(BTBrain)
을 하게되면 true를 리턴해주게 된다.

typeof(SampleBain).IsAssignableFrom(typeof(BTBrain))

한줄 요약: 이 타입이 매개변수의 타입에 대입 가능한가? (상속이나, 대입이 가능한경우)

참고:https://learn.microsoft.com/ko-kr/dotnet/api/system.type.isassignablefrom?view=net-7.0

느낀점

생각보다 비슷한 함수가 많은데 각각의 역할은 조금씩 다른 걸 보고 아직도 배워야하는게 많다고 느꼈다. 적재적소에 함수를 잘 쓸 수 있어야 좀 더 나은 C# 개발자가 될 수 있을 것 같다.

profile
성장을 멈추지 않는 개발자

0개의 댓글