如果我有这样的枚举类型:
TOAuthSubjectTypes = (
[MappingAttr('public')]
ostPublic,
[MappingAttr('pairwise')]
ostPairwise
);
在特定时刻,我有一个保存的变量ostPairwise
,是否可以检索值的属性ostPairwise
?现在,我正在应用的解决方法是按枚举类型的顺序设置所有属性,然后通过GetAttributes
枚举类型的序数值到达它们,但我想知道是否有更惯用的方法。
抱歉,如果重复了。我在其他语言标签上找到了很多答案,但没有与 Delphi 相关的答案。
不幸的是,根本就没有办法做你想做的事情,因为没有为单个枚举成员存储的 RTTI,只有枚举类型本身的 RTTI。
根据对Delphi 2010 RTTI 的回答:探索枚举(对于 Delphi 12 仍然适用):
因此,最好的解决方法是将属性放在枚举类型上,然后按枚举值对其进行索引。
根据 Remy 的回答,似乎无法访问特定成员的属性。我实现类似结果的方法是将属性定义为:
还有两个通用函数,声明为
并实现为
这些都是匆忙编写的,但到目前为止还算有效。关键是将所有属性设置为枚举类型,而不是其值,因此,只要函数之前的假设成立,它就能够一致地检索,我猜。