나는 실제로 Rtti를 사용하여 일반적인 메소드 호출자를 암시하려고합니다. 그것은 다음과 같이 작동합니다 :Delphi XE에서 클래스 이름 참조를 가져 오는 방법은 무엇입니까?
- 내가 호출자가
그래서이 클래스의 지정된 메소드를 호출하여 작업을 할 것입니다
내가 작업하고자하는 클래스의 클래스 참조 목록을 구현하지 않으면이를 수행 할 수있는 방법이 있습니까?
나는 실제로 Rtti를 사용하여 일반적인 메소드 호출자를 암시하려고합니다. 그것은 다음과 같이 작동합니다 :Delphi XE에서 클래스 이름 참조를 가져 오는 방법은 무엇입니까?
그래서이 클래스의 지정된 메소드를 호출하여 작업을 할 것입니다
내가 작업하고자하는 클래스의 클래스 참조 목록을 구현하지 않으면이를 수행 할 수있는 방법이 있습니까?
그의 이름을 사용하여 클래스 참조를 얻으려면 TRttiContext.FindType
함수를 사용하여 클래스 이름을 전달하고 AsInstance
속성을 사용하여 인스턴스를 검색해야합니다. 그러면 클래스의 생성자를 호출 할 수 있습니다.
var
Instance : TRttiInstanceType;
ctx : TRttiContext;
mClass : TValue;
begin
ctx := TRttiContext.Create;
Instance := ctx.FindType(ClassName).AsInstance; //ClassName is something like 'Classes.TStringList';
mClass := Instance.GetMethod('Create').Invoke(Instance.MetaclassType,[]);
//do your stuff here
end;
클래스 인스턴스를 어떻게 잡을 계획입니까? –
클래스 참조를 얻었는지 여부에 관계없이 객체를 인스턴스화 할 수 있습니다. – Haruki