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

Yoo Hyung Joo ·2023년 10월 17일

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개의 댓글