AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.01.2008, 12:11   #1  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Задача, по-моему, тривиальная, но довольно долго не могу найти решения. Как узнать имя текущего класса?
Например, есть некий метод класса MyClass

public void myMethod()
{
info(strfmt('Имя класса %1', this.name)); // вот тут должно быть имя MyClass
}


А дальше в коде вызов метода:

...
MyClass MyClass1;
MyClass1.myMethod();
...


Старый 28.01.2008, 15:42   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Aliaksei_Berkau Посмотреть сообщение
this.name
функция ClassNum(this) возвращает идентификатор класса.
а функция ClassStr(this) возвратит программисткое название.
__________________
полезное на axForum, github, vk, coub.
Старый 28.01.2008, 16:11   #3  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Да, действительно, есть такие.
Спасибо! И как это раньше не заметил?

Но вот на ClassStr(this) выдаёт ошибку о том, что необходимый входной параметр должен иметь тип class.
Может как-либо можно с помощью функции ClassIdGet(this)? Она вроде возвращает верный id - класса.
Старый 28.01.2008, 16:33   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Aliaksei_Berkau Посмотреть сообщение
Да, действительно, есть такие.
Спасибо! И как это раньше не заметил?

Но вот на ClassStr(this) выдаёт ошибку о том, что необходимый входной параметр должен иметь тип class.
Может как-либо можно с помощью функции ClassIdGet(this)? Она вроде возвращает верный id - класса.
ох, ты. точно.
для инстанцированного объекта нужно действительно 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
__________________
полезное на axForum, github, vk, coub.
Старый 28.01.2008, 18:12   #5  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Всё равно как-то не понятно

ClassIdGet(this) возвращает id-текущего класса. А теперь мне по этому id нужно узнать имя. ClassNum в данном случае не подходит.
Т.е. нужна функция возвращающая по id-шнику имя объекта.
Старый 28.01.2008, 19:05   #6  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
<div class='XPPtop'>X++</div><div class='XPP'>
classId2Name(...) [color=:green]// Global::classId2Name([/color]</div>
Старый 29.01.2008, 10:32   #7  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Отлично! То что нужно!

Итого:

Код:
	int id;
	str className;
   ;

	 id = ClassIdGet(this);
	 className = classId2Name(id);
	  info(strfmt(' имя класса	%1',		className));


Закрыто!
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:40.