Recently, I wanted to use a method for two different concrete classes that shared an interface. The solution? Using a generic method with type constraints.
I'd never say that you should never build any custom software. But you have to enter into custom software projects knowing the "custom" part will be risky.