1

我正在使用一些具有一些动态定义属性的基本 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

这不能按预期工作。我试图浏览inputMetaPropvarargin但我仍然无法在PreReadProperty函数中获得我的读取值

当我阅读时,myVar.myProp.myProp1我想在PreReadProperty. 有没有办法做到这一点?

问候

4

0 回答 0