Используйте метод addprop, чтобы добавить динамические свойства к классу, который выведен от класса dynamicprops. Функция save сохраняет динамические свойства с объектом, к которому они присоединяются. Для получения дополнительной информации о динамических свойствах смотрите Динамические свойства — Adding Properties к Экземпляру.
Когда Вы Потребность saveobj и loadobj МетодыФункция save сохраняет динамические свойства и их значения. Однако save не сохраняет атрибуты динамического свойства, потому что эти атрибуты не заданы в определении класса. Если вы сохраняете объект, который имеет динамические свойства со значениями атрибутов не по умолчанию, используйте saveobj и loadobj, чтобы справиться с сохранением и загрузкой значений атрибута.
Если динамическое свойство имеет значения атрибута не по умолчанию, преобразуйте объект в struct в методе saveobj. Сохраните значения атрибута динамического свойства в struct так, чтобы метод loadobj мог восстановить эти значения.
Реализация saveobj и loadobj МетодыВаш метод saveobj может получить значения атрибута не по умолчанию из объекта meta.DynamicProperty, сопоставленного с динамическим свойством. Предположим объект, который вы сохраняете, имеет динамическое свойство под названием DynoProp. Создайте struct в методе saveobj, чтобы сохранить данные что использование метода loadobj, чтобы восстановить объект.
Вот то, как метод saveobj работает:
Получите объект meta.DynamicProperty для динамического свойства.
Сохраните имя и значение динамического свойства в struct s.
Сохраните значения атрибутов динамического свойства не по умолчанию для SetAccess и GetAccess в struct. Функция loadobj восстанавливает эти значения.
methods function s = saveobj(obj) metaDynoProp = findprop(obj,'DynoProp'); s.dynamicprops(1).name = metaDynoProp.Name; s.dynamicprops(1).value = obj.DynoProp; s.dynamicprops(1).setAccess = metaDynoProp.SetAccess; s.dynamicprops(1).getAccess = metaDynoProp.GetAccess; ... end end
Ваш метод loadobj может добавить динамическое свойство и установить значения атрибута:
Создайте экземпляр класса.
Используйте addprop, чтобы добавить новое динамическое свойство к объекту.
Восстановите атрибуты динамического свойства.
methods (Static) function obj = loadobj(s) if isstruct(s) obj = ClassConstructor; ... metaDynoProp = addprop(obj,s.dynamicprops(1).name); obj.(s.dynamicprops(1).name) = s.dynamicprops(1).value; metaDynoProp.SetAccess = s.dynamicprops(1).setAccess; metaDynoProp.GetAccess = s.dynamicprops(1).getAccess; end end end