I really think that UDA annotations + single mixin like this: class Test { private: // annotated stuff public: mixin implementAnnotations!Test; } is a most type-safe approach which scales.