I am looking for a clean way to do incremental updates in my code library without breaking compatibility. This may mean adding new members to classes or modifying existing members to provide additional functionality. Sometimes I need to change a member so that it breaks existing code (for example, renames a method or changes its return type), so I would not touch any of my existing types after sending them.
The way I'm currently setting this up is through inheritance and polymorphism, creating a new class that extends the previous “version” of this class.

, StatusResult (, StatusResultVersion3) ProtocolVersion CommandResult.
.NET, , , : . , , . , . . , .
?