如何列出D中的所有类/结构方法(编译时内省)?

如何列出D中的所有类/结构方法(编译时内省)?,d,introspection,D,Introspection,如何在D中列出类或结构的所有方法(模板和普通方法)?编译时间。\uuu traits(所有成员) 我的书中的示例章节也更详细: 您可以使用allMembers来获取名称,使用getOverloads来获取重载,使用其他特性来确定它们都是什么。再次=)如何列出所有方法?allMembers返回所有内容:字段、方法、虚拟方法、模板、模板方法。。。目前我只能检测非模板方法(通过MemberFunctionsTuple Empty或Full)。但我无法区分模板和模板方法。我在traits列表中没有看到

如何在D中列出类或结构的所有方法(模板和普通方法)?编译时间。

\uuu traits(所有成员)

我的书中的示例章节也更详细:


您可以使用allMembers来获取名称,使用getOverloads来获取重载,使用其他特性来确定它们都是什么。

再次=)如何列出所有方法?allMembers返回所有内容:字段、方法、虚拟方法、模板、模板方法。。。目前我只能检测非模板方法(通过MemberFunctionsTuple Empty或Full)。但我无法区分模板和模板方法。我在traits列表中没有看到“isMethod”。好的,我在你的书中看到,getMember使用“is(typeof(member)==function))”来做这些事情。我会试试的。是的,再加上
\u traits(getOverloads)
就可以得到它们。模板有点棘手,因为它们在实例化之前并不是真正的函数,但是对于模板函数来说,…is(typeof(member)==function)将为false?如果不在那里给它参数,则可能为false。例如,std.conv.to不是函数,而是std.conv.to!int是。您可以在这里找到一些线索: