AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 28.01.2008, 12:11   #1  
Zeratul ist offline
Zeratul
Участник
 
75 / 10 (1) +
Registriert seit: 29.09.2005
Ort: Минск
Задача, по-моему, тривиальная, но довольно долго не могу найти решения. Как узнать имя текущего класса?
Например, есть некий метод класса MyClass

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


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

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


Alt 28.01.2008, 15:42   #2  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von Aliaksei_Berkau Beitrag anzeigen
this.name
функция ClassNum(this) возвращает идентификатор класса.
а функция ClassStr(this) возвратит программисткое название.
__________________
полезное на axForum, github, vk, coub.
Alt 28.01.2008, 16:11   #3  
Zeratul ist offline
Zeratul
Участник
 
75 / 10 (1) +
Registriert seit: 29.09.2005
Ort: Минск
Да, действительно, есть такие.
Спасибо! И как это раньше не заметил?

Но вот на ClassStr(this) выдаёт ошибку о том, что необходимый входной параметр должен иметь тип class.
Может как-либо можно с помощью функции ClassIdGet(this)? Она вроде возвращает верный id - класса.
Alt 28.01.2008, 16:33   #4  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von Aliaksei_Berkau Beitrag anzeigen
Да, действительно, есть такие.
Спасибо! И как это раньше не заметил?

Но вот на ClassStr(this) выдаёт ошибку о том, что необходимый входной параметр должен иметь тип class.
Может как-либо можно с помощью функции ClassIdGet(this)? Она вроде возвращает верный id - класса.
ох, ты. точно.
для инстанцированного объекта нужно действительно ClassIdGet

Zitat:
ClassIdGet
Syntax
Int ClassIdGet(object)

Description
Returns the numeric identifier (the class id) for the class where the object was instantiated.
Zitat:
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.
Alt 28.01.2008, 18:12   #5  
Zeratul ist offline
Zeratul
Участник
 
75 / 10 (1) +
Registriert seit: 29.09.2005
Ort: Минск
Всё равно как-то не понятно

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

Итого:

Code:
	int id;
	str className;
   ;

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


Закрыто!
 


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 09:09 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.