gpt4 book ai didi

delphi - Delphi 2010 RTTI:如何集成/探索包含自定义属性的枚举

转载 作者:行者123 更新时间:2023-12-03 19:44:52 27 4
gpt4 key购买 nike

我使用TCustomAttribute子孙类(TEnumAttribute)创建了一个枚举,为每个枚举提供其他数据(如果成功,它将驱动一个可以查询枚举并相应地填充自身的自定义组件)。


type
TShoppingCartType = (

[TEnumAttribute(0, 'All')]
sctAll,

[TEnumAttribute(1, 'Web Shopping Cart')]
sctWebShoppingCart,

[TEnumAttribute(2, 'Wish List')]
sctDefaultWebWishList,

[TEnumAttribute(3, 'Custom')]
sctWebCustomList

);



我可以很好地获取名称和值(使用相应的TypeInfo GetEnum方法),但是如何访问枚举中的每个值并访问其定义的属性?

谢谢你的任何信息

最佳答案

据我所知,您只能用属性注释类型。由于枚举的值只是一个简单的序数值,因此您的方法可能行不通。

如果枚举值本身是类型,则可以使用官方文档中所述的TRttiContextTRttiType

http://docwiki.embarcadero.com/RADStudio/XE/en/Extracting_Attributes_at_Run_Time

用经典的方法来做似乎更合适:

TShoppingCartTypeDescriptions = array[TShoppingCartType] of string;

...

Descriptions: TShoppingCartTypeDescriptions;
Descriptions[sctAll] := 'All';
Descriptions[sctWebShippingCart] := 'Web Shopping Cart';
// and so on


您可以使用以下方法枚举所有值:

var 
I: TShoppingCartType;
begin

for I := Low(TShoppingCartType) to High(TShoppingCartType) do
// Do something with I

end;

关于delphi - Delphi 2010 RTTI:如何集成/探索包含自定义属性的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4043981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com