컴퓨터 언어(2)
-
[C#] Dynamic의 Reflection
Unity 엔진에서 데이터 분석을 위한 커스텀에디터를 작성하고있는 도중 분석하려는 필드타입이 dynamic 일 경우 Reflection 으로 처리한 과정이다. 그전에 일반적인 필드들에 대해 어떻게 Reflection 으로 처리했는지 먼저 살펴본다. 커스텀에디터의 컨셉은 위와같으며, 멤버필드들의 값 변화를 디버그를 하지않고 시각적으로 바로 체크할 수 있도록 해주는 툴을 제작중이다. 시간에 따라 값이 차트에 그려지고, 차트를 클릭하면 해당 시간에 저장된 필드들의 값이 나타난다. 위의 예시에서, 분석 타겟이 된 객체는 FSM 확장을위한 베이스 클래스를 상속받는 형태의 클래스타입인데, FSM 베이스 클래스를 상속받은 자식클래스들은 각각 고유한 상태들이 필요하므로, 베이스의 StateType 필드는 dynamic..
2022.09.19 -
[C#] IEnumerator, IEnumerable
IEnumerator 는 C++ 에서의 Iterator 처럼, Collection 을 반복(Iteration) 하기위한 인터페이스이다. IEnumerable 은 GetEnumerator() 라는 멤버함수를 노출해서 Collection 을 반복할 수 있도록 하는 인터페이스이다. 결국 배열과같은 연속적인 데이터가 아닌 자료구조에 대해서도 자료 순회가 가능하도록 구현하기위한 인터페이스.. 반복을 위한 IEnumerator 를 상속받는 클래스를 구현하고, Collection 이 IEnumerable 을 상속받은 후, IEnumerable 의 멤버인 GetEnumerator() 에서 IEnumerator를 상속받은 클래스의 객체를 생성해서 리턴하는 형태로 작성한다. 다음은 IEnumerable 를 상속받는 ILi..
2022.07.15