Can't you start with making the Cancel method internal so it is only visible inside your Order assembly? Off course other classes in this assembly can then still access the cancel method.
Maybe another way is to expose the collection of OrderLines as a collection of IOrderLine interfaces and hide the Cancel method that way.