문제

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.

실제 반복 및 추출 코드 작성은 독자의 연습으로 남겨집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top