2014-06-12 1 views
0

선언되었지만 인스턴스화되지 않은 TList 요소의 형식을 가져 오는 방법이 있는지 알고 싶습니다. 다음과 같이 객체 속성의 클래스를 캡처 할 수 있습니다.선언 된 TList의 요소 형식을 얻는 방법

MyList: TList<TMyObject> read FMyList; 

MyRTTIProperty: TRttiProperty;  
NewObject: TObject; 
PropertyClass: TClass; 

MyRttiProperty := MyRttiType.GetProperty('MyList'); 
PropertyClass := MyRTTIProperty.PropertyType.Handle.TypeData.ClassType; // (returns TList<TMyObject>) 
NewObject := PropertyClass.Create; 

이렇게하면 목록을 올바르게 인스턴스화 할 수 있습니다. 그러나 이제는 요소의 클래스 인 TMyObject를 가져와 인스턴스를 만들고 속성을 채우고 목록에 추가 할 수있게하려고합니다. 어떻게해야합니까?

미리 감사드립니다.

답변

0

내가 아는 한, RTTI는 일반 매개 변수에 대한 정보를 줄만큼 충분히 융통성이 없습니다. MyRTTIProperty.PropertyType.Name (TList<TMyObject>)의 값을 수동으로 구문 분석하여 일반 유형 이름 (TMyObject)을 추출한 다음 TRttiContext.FindType()을 사용하여 해당 유형의 RTTI를 얻은 다음 필요에 따라 ClassType의 인스턴스를 만들 수 있습니다.

관련 문제