是否可以使用D的内置特征和/或std.traits来检测函数(在类/结构中或不在类/构造中)是否用@property注释?我知道@property并不是一个真正的属性,但我认为__traits(getAttributes, ...)
可能会做到(运气不好)。
通常,我认为最好只测试要使用的表达式是否编译(例如is(typeof(var.prop))
),但如果出于某种原因,您确实需要知道函数标记有@property
,那么您可以使用std.traits.functionAttributes来获取该信息。类似的东西
enum isProperty = (functionAttributes!(MyType.prop) & FunctionAttribute.property) != 0;
应该起作用。