만약에 어떤 형이 있고 상속받은 형이 있을 때, 상속받은 형을 인수로 넣어서 생성하려 한다면 처음 생각나는 건 제너릭일 것이다.
대략
그런데 여기에는 문제가 있는게, T.Create가 기본형이면 몰라도 T.Create에 어떤 인수가 들어가면 문제가 생긴다는 점이다.
그럴 때는 메타클래스를 쓰면 좋다.
메타클래스의 기본적인 사항에 대해서는 이 링크를 참고하자.
예를 들어서 TCar에 상속되는 TTruck, TBus가 있고, 생성자에 마력을 입력받아 각각에 대해서 생성을 하고 싶다면 다음과 같이 하면 된다.
[snippet slug=delphi-metaclass-part1 lang=pascal]
이렇게 한 뒤 생성할 곳에서
[snippet slug=delphi-metaclass-part2 lang=pascal]
이런 식으로 사용하면 된다.