Where I work we have around 10 VS projects in a solution which are identical in functionality (with some different different rules in a few methods) and share many exact methods. They share the same namespace and the classes are called with if else's individually.
I believe it would be better and more succinct to have an interface and an abstract class with protected methods which are common among all the children.
The methods which take one of these classes can then take an Interface rather than have 10 different methods which take one and run the same method on each class.
The public methods all have the same signature and return the same thing.
Future implementations of the class will have a clear guideline on how to implement it (other than copy pasting and editing a previous version) and it is more maintainable. The reason I am considering this is because I am adding an extra version and unhappy with the idea of copying and pasting a lot of mess and changing all the bits I need to change (just in 2-3 long methods of ~20 methods)
I am having difficulty expressing my reasons to why I should be allowed to make these changes (would probably not take more than a day and changes no logic so minimal testing is required). I know intuitively it is better but that is not good enough!
How do I explain to the lead dev when DRY is a good thing? Or is he right that we should just keep copy and pasting things because we "inherited the code this way"?