주어진 인터페이스를 구현하는 모든 델파이 클래스를 열거하십니까?
-
19-09-2019 - |
문제
Delphi 2010의 새로운 확장 된 RTTI를 사용하면 Delphi 응용 프로그램 (런타임)이 주어진 인터페이스를 구현하는 모든 클래스의 목록을 구축 할 수 있습니까?
해결책
기술적으로 그렇습니다. 인터페이스에 안내가 있고 관심있는 클래스가 단위의 인터페이스 섹션에있는 한.
RTTI 장치에는 아직 클래스가 구현하는 모든 인터페이스를 설명하기위한 API가 없지만 데이터는 유형 정보에 있습니다.
이 표현식에서 인터페이스 유형에 대한 안내서를 얻을 수 있습니다.
GetTypeData(TypeInfo(ITheInterface))^.Guid
또는:
ctx: TRttiContext;
// ...
(ctx.GetType(TypeInfo(ITheInterface)) as TRttiInterfaceType).GUID
인스턴스 유형의 클래스를 사용하여 확인할 수 있습니다. TClass.GetInterfaceEntry(IID)
-NIL을 반환하면 클래스가 인터페이스를 구현합니다.
단위의 인터페이스 섹션에서 선언 된 모든 클래스는 TRttiContext.GetTypes
.
실제 반복 및 추출 코드 작성은 독자의 연습으로 남겨집니다.
제휴하지 않습니다 StackOverflow