1

나는 현재 클래스와 메서드를 컨텍스트의 이름으로 설정하고 싶습니다.이 개체의 가장 큰 빈도를 생성하는 메서드/클래스를 추적하기 위해 캐시 개체 속성이 있습니다.코드에서 로컬 메서드의 이름 속성을 참조하려면 어떻게합니까?

아래 코드를 사용하면 쉽게 현재 클래스 이름을 얻을 수 있지만 문서에서 현재 메소드 이름을 수집하는 것과 비슷한 방법을 찾기 위해 고심하고 있습니다.

set obj.ClassName = ..%ClassName(1) //Grab class name 
set obj.MethodName =     //Need to grab the method's name here 

내가 문제의 방법은 객체 생성과 같은 설정이되면이 쉽게 수행 할 수 있습니다 알고 있지만, 나는 오히려이 길을 갈 것입니다 .. 메소드의 이름을 참조하는 간단한 방법이 있어야한다 , 권리?

///I'd rather not do this to my methods if I don't have to. 
Method MyMethod() [ CodeMode = objectgenerator ] 
+0

사용중인 프로그래밍 언어를 나타내는 질문에 태그를 추가하십시오. –

+0

Robert - 프로그래밍 언어는 Cache Object Script이며이를 나타내는 시스템에 태그가 없습니다. 불행히도 아직 만들지 못한 충분한 담당자가 있습니다. – mccrackend

+0

지원되는 방법이 없습니다. 이것에 대한 나의 반응은 ... 발전기 방식이 아니라면 왜 그걸 필요로 할까? 어쩌면 내가 원하는 것을 성취 할 수있는 또 다른 기술을 말할 수있을 것입니다. – mcbainpc

답변

2

% SYS에서 찾을 수있는 $$$ CurrentMethod는 % SYS에서 찾을 수 있으므로 include를 사용할 필요가 없습니다. $$$ CurrentClass도 정의되어 있습니다.

+0

$$$ CurrentMethod는 완벽하게 작동했습니다. - 많은 감사합니다! – mccrackend

1

메소드에서이를 수행하는 "공식적인"방법은 없습니다.

$stack($stack,"PLACE") 표현식을 사용하면 현재 실행 된 코드 위치를 확인할 수 있습니다. 디버깅 목적으로도 충분해야합니다. 필요한 경우 메소드 이름을 추출 할 수 있습니다. 그래도 이것을 프로덕션 코드에서 사용하는 것은 권장하지 않습니다.)

+0

나는 똑똑한 방법이 없다는 것이 두렵다. $ stack을 사용하여 해결 방법에 대한 대답을 수락했다. 메소드 생성기가이를 수행하는 가장 좋은 방법 일 것입니다. – mccrackend

1

% Projection 클래스를 사용하고 싶습니다. 그것을 수행하는 방법에 대한 문서를 찾을 수 있지만 기본 개념은 한 클래스를 컴파일 할 때 다른 클래스를 생성하도록 설정 될 수 있다는 것입니다.

Intersystem이 제공하는 방법을 확장하고 싶다면 (Intersystem 자체가 속임수를 사용하고 모든 사람이 사용할 수있는 일반적인 방법을 만들지 않고 클래스 컴파일러를 변경하는 등) 어떤 종류의 해킹을 할 수 있습니다 #CurrentMethod 클래스 매개 변수가 있고이를 저장할 때 실제 메서드 이름으로 대체 할 프로젝션 클래스를 설정합니다.

이 설정은 쉽지만 일단 메타 기능을 추가하면 필요할 때마다 추가 기능을 사용할 수 있습니다. 앞에서 언급 한 것과 비슷한 목적으로이 작업을 수행하고 강력한 형식의 결과 집합 개체를 생성하는 데 편리한 방법을 사용합니다.

Cache Studio 추가 기능에서 호출 한 코드에서 동일한 작업을 수행 할 수도 있습니다. 추가 기능을 작성하는 방법에 따라 메뉴 항목에서 코드를 실행할 수 있습니다 (예 :).

관련 문제