我正在使用一些具有一些动态定义属性的基本 Matlab 类。我为一个属性添加了侦听器“PreGet”和“PostGet”。我的属性可以是一个简单的变量或结构。
这是我的课:
classdef myClass < dynamicprops
methods
function obj = myClass()
NewProp = 'myProp';
DynamicProp=addprop(obj,NewProp);
DynamicProp.SetAccess='public';
DynamicProp.GetAccess='public';
DynamicProp.SetObservable=true;
DynamicProp.GetObservable=true;
addlistener(obj , NewProp , 'PreGet' , @obj.PreReadProperty);
%addlistener(obj , NewProp , 'PreSet' , @obj.PreSendProperty);
addlistener(obj , NewProp , 'PostGet' , @obj.PostReadProperty);
%addlistener(obj , NewProp , 'PostSet' , @obj.PostSendProperty);
end
function PreReadProperty(obj, inputMetaProp, varargin)
DynamicProp=obj.findprop((inputMetaProp.Name));
disp(obj.(DynamicProp.Name))
%Body
end
%
function PostReadProperty(obj, inputMetaProp, varargin)
%DynamicProp=obj.findprop(inputMetaProp.Name);
% Body
end
end
结尾
我试图PreReadProperty
在显示它之前捕获我访问的值。
例子:
>> myVar = myClass;
myVar.myProp = 1;
mytest = myVar.myProp;
1
>> mytest
mytest =
1
这适用于变量。我可以抓住它并使用它
myVar.myProp
当是一个结构时,我正在尝试做同样的事情:
>> myVar = myClass;
>> myVar.myProp.myProp1 = 1;
>> myVar.myProp.myProp2 = 2;
myProp1: 1
>> mytest = myVar.myProp.myProp1;
myProp1: 1
myProp2: 2
>> mytest
mytest =
1
这不能按预期工作。我试图浏览inputMetaProp
,varargin
但我仍然无法在PreReadProperty
函数中获得我的读取值
当我阅读时,myVar.myProp.myProp1
我想在PreReadProperty
. 有没有办法做到这一点?
问候