m = metaclass(obj)
m = metaclass(className)
m = ?ClassName
| Paramètre | Description |
|---|---|
| obj | un objet classdef ou handle |
| className | un nom de classe sous forme de chaine, y compris les noms qualifies par paquet |
| Paramètre | Description |
|---|---|
| m | une structure de metadonnees |
metaclass renvoie les metadonnees d'une classe classdef.
?ClassName est accepte comme raccourci compatible pour metaclass('ClassName'), y compris avec les noms de classes qualifies par paquet.
La structure retournee contient Name, SuperclassList, PropertyList, MethodList, EventList et EnumerationMemberList. EventList contient les evenements publics; EventDetails contient tous les evenements declares.
ClassDetails indique les attributs bruts de la classe et des indicateurs derives comme Abstract, Sealed et Handle.
Pour les classes classdef, PropertyDetails, MethodDetails, EventDetails et EnumerationDetails exposent des structures de metadonnees Nelson pour les attributs courants: acces, methodes statiques, cachees ou scellees, proprietes constantes, dependantes et observables. Les structures de detail contiennent aussi un tableau de cellules Attributes avec les attributs de bloc bruts.
Les champs de ClassDetails sont Name, Attributes, Abstract, Sealed, Handle, Hidden, ConstructOnLoad et InferiorClasses. InferiorClasses conserve l'expression d'attribut de classe sous forme de texte.
Les champs de PropertyDetails sont Name, DefiningClass, DefaultValueExpression, Access, GetAccess, SetAccess, GetMethod, SetMethod, Constant, Dependent, Abstract, Hidden, GetObservable, SetObservable, AbortSet, Transient, NonCopyable, Dynamic, ValidationExpression et Attributes.
Lorsque metaclass est appele avec un objet scalaire qui possede des proprietes dynamiques, PropertyList et PropertyDetails incluent ces proprietes d'instance avec Dynamic defini a true.
Les champs de MethodDetails sont Name, DefiningClass, Access, Static, Hidden, Sealed, Abstract et Attributes.
Les champs de EventDetails sont Name, DefiningClass, ListenAccess, NotifyAccess, Hidden et Attributes. Les champs de EnumerationDetails sont Name, DefiningClass et ConstructorArguments.
d = [tempdir(), 'nelson_help_metaclass/'];
mkdir(d);
filewrite([d, '/NelsonHelpMetaPoint.m'], ["classdef NelsonHelpMetaPoint"; " properties (Constant)"; " Dimension = 2"; " end"; " properties"; " X = 0"; " end"; " methods"; " function r = value(obj)"; " r = obj.X;"; " end"; " end"; " methods (Static)"; " function obj = origin()"; " obj = NelsonHelpMetaPoint();"; " end"; " end"; "end"]);
addpath(d);
m = ?NelsonHelpMetaPoint;
m.PropertyList
m.ClassDetails.Handle
m.PropertyDetails(find(strcmp({m.PropertyDetails.Name}, 'Dimension'))).Constant
m.PropertyDetails(find(strcmp({m.PropertyDetails.Name}, 'Dimension'))).Attributes
m.MethodDetails(find(strcmp({m.MethodDetails.Name}, 'origin'))).Static
m.MethodDetails(find(strcmp({m.MethodDetails.Name}, 'origin'))).Attributes
| Version | Description |
|---|---|
| 2.0.0 | support des metadonnees classdef ajoute |