One of the new features in NServiceBus 3.0 is the introduction of two new message interfaces, IEvent and ICommand. The purpose is to capture more of the intent of the messages that you as a user are defining. This will help NServiceBus to enforce messaging best practices and stop you from doing crazy things:)

Messages implementing ICommand

  • Is not allowed to be published since all commands should have one logical owner and should be sent to the endpoint responsible for processing
  • Can't be subscribed and unsubscribed to
  • Can't implement IEvent

Messages implementing IEvent

  • Can be published
  • Can be subscribed and unsubscribed to
  • Can't be sent using Bus.Send() since all events should be Published
  • Can't implement ICommand
  • Can't be sent using the gateway, ie bus.SendToSites()
So please go ahead and use those additional interfaces if you wan't NServiceBus to help you fall into the pit of success.
Please add a comment if you have for additional checks that we should do!