How do I remove a dynamic property from a class?
40 views (last 30 days)
Show older comments
MathWorks Support Team
on 23 Apr 2018
Answered: MathWorks Support Team
on 23 Apr 2018
I have a class "A" that has a property called "Sigs" of class "B". Class "B" inherits from "dynamicprops" and the constructor for "A" populates "Sigs" with a bunch of dynamic properties that are of class "C". I want to be able to delete those properties from "Sigs". How do I do that?
Accepted Answer
MathWorks Support Team
on 23 Apr 2018
In order to remove a dynamic property, save the "meta.DynamicProperty" object that is returned by "addprop" and then use the "delete" function of that object.
In order to save the "meta.DynamicProperty" objects, create a struct "sig_meta" that maps from the property name to the "meta.DynamicProperty" object. This was a property of the "A" class.
If you want to hide the "sig_meta" from the property list of your "A" class, use "Hidden=true". This allows you to still use the property, but it will not clutter your Command Window outputs.
Finally, in order to delete the dynamic property, use "delete" on the field of the struct "sig_meta" in your "A" class. Then, call "rmfield" to keep the struct and the "B" class properties in sync.
An example is attached.
To play with this example, execute
>> obj = A;
>> obj.Sigs
>> obj.sig_meta
>> delete(obj.sig_meta.prop10);
>> obj.Sigs
>> obj.sig_meta
>> obj.sig_meta = rmfield(obj.sig_meta,'prop10')
>> obj.sig_meta;
0 Comments
More Answers (0)
See Also
Categories
Find more on Structures in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!