The Naked Objects for .NET has made a change to their API, in that they now distinguish:
- MenuServices - services registered here show up on the UI as menus (but may still be selected and deselected within a Profile). Actions on these services will also be contributed unless marked [NotContributed]. They will also be injected into objects as needed.
- ContributedActions - Services registered here will contribute actions but will not show up as menus, nor be selectable within a profile. They will also be injected into objects (though I think it not very likely that you would want to).
- SystemServices - These services (e.g. SMTPMailSender) are registered for purposes of dependency injection but do not have any user visibility.
These are currently specified through different overridden methods in their bootstrap class. They did explore ways to achieve the same distinctions entirely by annotation, but eventually concluded that this was a simpler approach.
This ticket is a marker for a similar discussion with respect to Isis.