28.01.2008, 12:11 | #1 |
Участник
|
Задача, по-моему, тривиальная, но довольно долго не могу найти решения. Как узнать имя текущего класса?
Например, есть некий метод класса MyClass public void myMethod() { info(strfmt('Имя класса %1', this.name)); // вот тут должно быть имя MyClass } А дальше в коде вызов метода: ... MyClass MyClass1; MyClass1.myMethod(); ... |
|
28.01.2008, 15:42 | #2 |
Участник
|
функция ClassNum(this) возвращает идентификатор класса.
а функция ClassStr(this) возвратит программисткое название. |
|
28.01.2008, 16:11 | #3 |
Участник
|
Да, действительно, есть такие.
Спасибо! И как это раньше не заметил? Но вот на ClassStr(this) выдаёт ошибку о том, что необходимый входной параметр должен иметь тип class. Может как-либо можно с помощью функции ClassIdGet(this)? Она вроде возвращает верный id - класса. |
|
28.01.2008, 16:33 | #4 |
Участник
|
Цитата:
для инстанцированного объекта нужно действительно ClassIdGet Цитата:
ClassIdGet
Syntax Int ClassIdGet(object) Description Returns the numeric identifier (the class id) for the class where the object was instantiated. Цитата:
int ClassNum(Class)
Description Converts to the numeric equivalent (the class id) for the specified class. Example { int i; i = ClassNum(myClass); // i is set to 1050 which is the id of the class myClass. } See also ClassStr |
|
28.01.2008, 18:12 | #5 |
Участник
|
Всё равно как-то не понятно
ClassIdGet(this) возвращает id-текущего класса. А теперь мне по этому id нужно узнать имя. ClassNum в данном случае не подходит. Т.е. нужна функция возвращающая по id-шнику имя объекта. |
|
28.01.2008, 19:05 | #6 |
Участник
|
<div class='XPPtop'>X++</div><div class='XPP'>
classId2Name(...) [color=:green]// Global::classId2Name([/color]</div> |
|
29.01.2008, 10:32 | #7 |
Участник
|
Отлично! То что нужно!
Итого: Код: int id; str className; ; id = ClassIdGet(this); className = classId2Name(id); info(strfmt(' имя класса %1', className)); Закрыто! |
|