Динамические свойства и ConstructOnLoad

При установке класса атрибут ConstructOnLoad на true заставляет MATLAB® вызывать конструктора класса при загрузке класса. MATLAB сохраняет и восстанавливает динамические свойства при загрузке объекта.

Если вы создаете динамические свойства из конструктора класса, можно вызвать конфликт, если вы также устанавливаете класс атрибут ConstructOnLoad на true. Вот последовательность:

  • Сохраненный объект сохраняет имена и значения свойств, включая динамические свойства

  • Когда загружено, новый объект создается, и все свойства восстанавливаются значениям в то время, когда объект был сохранен

  • Затем атрибут ConstructOnLoad вызывает вызов конструктора класса, который создал бы другое динамическое свойство с тем же именем как загруженное свойство. Смотрите Сохраняют и Объекты Загрузки для больше на последовательности загрузки.

  • MATLAB предотвращает конфликт путем загрузки сохраненного динамического свойства и не выполняет addprop при вызове конструктора.

Если вы используете ConstructOnLoad, добавьте динамические свойства из конструктора класса и хотите, чтобы конструктор вызвал addprop во время загрузки, то установленный динамическое свойство атрибут Transient в true. Эта установка препятствует свойству быть сохраненной. Например:

classdef (ConstructOnLoad) MyClass < dynamicprops
   function obj = MyClass
      P = addprop(obj,'DynProp');
      P.Transient = true;
      ...
   end
end  

Похожие темы