Динамические свойства и 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  

Похожие темы