InterSystems FAQ rubric
Les définitions de classe créées par les utilisateurs sont stockées dans des classes de définition de classe. Ils peuvent être utilisés pour obtenir une liste de définitions de classe à partir d'un programme.
Remarque : Les classes de définition de classe font référence à toutes les classes contenues dans le package %Dictionary.
Dans l'exemple de code ci-dessous, une liste de définitions de classe est obtenue à l'aide de la commande query Summary de la classe %Dictionary.ClassDefinitionQuery.
Class ISJ.Utils
{
ClassMethod ClassInfo()
{
#dim ex As %Exception.AbstractException
try {
set currentNS=$NAMESPACE
while (1) {
read "Please specify namespace: ",x
if x'="" quit
}
set $NAMESPACE=x
write !!
Set statement = ##class(%SQL.Statement).%New()
Do statement.%PrepareClassQuery("%Dictionary.ClassDefinitionQuery","Summary")
set rs = statement.%Execute()
while rs.%Next() {
set name=rs.%Get("Name")
if name["%" continue // Skip the class with % in the name
if $extract(name,1,3)="csp" continue // skip csp.*
if $extract(name,1,3)="csr" continue // skip csr.*
write name,!
}
set $NAMESPACE=currentNS
}
catch ex {
write "Error occured: ",ex.DisplayString(),!
set $NAMESPACE=$get(currentNS)
}
}
}
ObjectScriptObjectScript
Voici un exemple d'exécution.
Lorsque vous exécutez la méthode de classe, il vous sera demandé de préciser un espace de noms, préciser le nom de l'espace de noms que vous souhaitez référencer.
USER>do ##class(ISJ.Utils).ClassInfo()
Please specify namespace : USER
CSPX.Dashboard.BarChart
CSPX.Dashboard.Chart
CSPX.Dashboard.ChartSeries
CSPX.Dashboard.FuelGauge
<skip>
INFORMATION.SCHEMA.VIEWTABLEUSAGE
ISJ.Utils
Test.JSONTest
Test.Person
Test.REST
Test.VSCode.REST
USER>
ObjectScriptObjectScript
Article associé: Getting the list of routines programmatically