检索添加到MATLAB OOP中的类的动态属性的列表

公民疯狂

使用MATLAB,可以将动态属性添加到类实例中,如下所示:

% Define a class supporting for dynamic properties
classdef DynamicClass < dynamicprops
end

% Add a dynamic property named 'toto' to some instance
c = DynamicClass();
c.addprop('toto');

无论如何,我没有找到一种方法来稍后通过反射获得动态属性列表,的确是这样:

m = metaclass(c);

返回属性的空列表:

PropertyList: [0x1 meta.property]

甚至在dynamicprops超类中列出属性也会返回一个空列表:

m.SuperClassList(1).PropertyList ==> 0x1 property array

有没有办法获取(通过反射)添加到类的动态属性的列表?

注意:一些解决方法是维护手动列表,newprop(end+1) = c.addprop(...)但是传递给另一个基类不是很实际(直到现在我一直在使用反射来获取有关子类属性的信息)。

山姆·罗伯茨(Sam Roberts)

动态属性不是类的属性,它们只是对象的属性-请注意,如果DynamicClass继承自dynamicprops,则类的不同对象DynamicClass可以具有不同的属性集:

>> a = DynamicClass;
>> b = DynamicClass;
>> a.addprop('hello');
>> a
a = 
  DynamicClass with properties:

    hello: []
>> b
b = 
  DynamicClass with no properties.

因此,您将无法通过反射获取有关它们的任何信息,即通过定义获取有关该类的信息。

您提供了一种解决方案(用于properties检索对象的所有属性名称(动态或非动态名称),然后用于findprop获取属性本身,然后获取有关该属性的信息)。

在大多数情况下,这很可能行得通,但是请注意,properties仅返回一个同时为Hidden = false的属性列表GetAccess = public(即使properties在对象的方法内部调用也是如此)。默认情况下,通过添加的属性addprop同时满足这两个条件,但是可以在添加属性后更改其属性,并且这些属性不会在您的解决方案中显示。如果调用fieldnames该对象,也会发生同样的情况

可能对您有用的另一件事是用于isprop直接检查对象是否具有感兴趣的属性。即使该属性为Hidden或,此方法也有效GetAccess = private有用的是,isprop可以处理对象数组,因此您可以创建class的对象数组DynamicClass,然后应用isprop以获得逻辑数组。

但是,我知道可靠地获取所有内容(私有与否,隐藏与否以及是否事先知道属性名称)的唯一方法是将对象临时转储到结构中,然后获取字段名称,如@ Marek建议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检索添加到MATLAB OOP中的类的动态属性的列表

来自分类Dev

将项目添加到Matlab类

来自分类Dev

将项目添加到Matlab类

来自分类Dev

检索“何时”将属性添加到本体

来自分类Dev

从添加到松弛按钮中检索临时代码

来自分类Dev

将数据添加到从 URL、PHP 检索的 JSON 中

来自分类Dev

动态添加到列表中

来自分类Dev

C# 将类添加到泛型列表并稍后检索类型

来自分类Dev

使用 MATLAB GUI 将元素添加到向量中

来自分类Dev

将动态属性添加到类而不是实例

来自分类Dev

动态地将属性添加到类

来自分类Dev

动态地将属性添加到指向字典中项目的Python类中

来自分类Dev

在类中动态添加属性

来自分类Dev

将“请选择”添加到从数据库中检索值的下拉列表中

来自分类Dev

如何从字符串中检索每个值并将它们添加到列表中

来自分类Dev

动态添加的项目不会被添加到列表中

来自分类Dev

使用Java将多个值添加到列表后,仅检索迭代中的最新记录

来自分类Dev

如何将项目添加到由 LINQ 检索的列表中

来自分类Dev

从给定的类引用创建动态对象并将列表中的值添加到它

来自分类Dev

动态添加新属性到属于WPF Datagrid中显示的类列表的类

来自分类Dev

将类添加到生成的列表中的列表项

来自分类Dev

如何使用反射将对象添加到类的实例的泛型列表属性中

来自分类Dev

将属性值添加到类的现有列表中

来自分类Dev

动态将jar中的库添加到类路径

来自分类Dev

将动态属性名称添加到选择中

来自分类Dev

动态将标题属性添加到HTML中的URL

来自分类Dev

动态属性源添加到SpringBootTest

来自分类Dev

webforms:在javascript选项中动态添加到下拉列表

来自分类Dev

将项目添加到动态绑定的下拉列表中

Related 相关文章

  1. 1

    检索添加到MATLAB OOP中的类的动态属性的列表

  2. 2

    将项目添加到Matlab类

  3. 3

    将项目添加到Matlab类

  4. 4

    检索“何时”将属性添加到本体

  5. 5

    从添加到松弛按钮中检索临时代码

  6. 6

    将数据添加到从 URL、PHP 检索的 JSON 中

  7. 7

    动态添加到列表中

  8. 8

    C# 将类添加到泛型列表并稍后检索类型

  9. 9

    使用 MATLAB GUI 将元素添加到向量中

  10. 10

    将动态属性添加到类而不是实例

  11. 11

    动态地将属性添加到类

  12. 12

    动态地将属性添加到指向字典中项目的Python类中

  13. 13

    在类中动态添加属性

  14. 14

    将“请选择”添加到从数据库中检索值的下拉列表中

  15. 15

    如何从字符串中检索每个值并将它们添加到列表中

  16. 16

    动态添加的项目不会被添加到列表中

  17. 17

    使用Java将多个值添加到列表后,仅检索迭代中的最新记录

  18. 18

    如何将项目添加到由 LINQ 检索的列表中

  19. 19

    从给定的类引用创建动态对象并将列表中的值添加到它

  20. 20

    动态添加新属性到属于WPF Datagrid中显示的类列表的类

  21. 21

    将类添加到生成的列表中的列表项

  22. 22

    如何使用反射将对象添加到类的实例的泛型列表属性中

  23. 23

    将属性值添加到类的现有列表中

  24. 24

    动态将jar中的库添加到类路径

  25. 25

    将动态属性名称添加到选择中

  26. 26

    动态将标题属性添加到HTML中的URL

  27. 27

    动态属性源添加到SpringBootTest

  28. 28

    webforms:在javascript选项中动态添加到下拉列表

  29. 29

    将项目添加到动态绑定的下拉列表中

热门标签

归档