Normally it is done via a new version of the interface. Than the implemenation is asking for the needed interface and its version. Than use the
QueryInterfacemethod to get the supported interface. See the example how to support different intefaces.
Inheritance is a good idea, because it ensures compatibility.