I have three classes: `InputSocket`, `InternalSocket`, `OutputSocket`. They all inherit from `BaseSocket` with implements `ISocket` interface, where I have common code for all classes and this part works fine, I have problem with partially shared code. 

`InputSocket` and `InternalSocket` shares Parsing part with `OutputSocket` does not have.

`InputSocket` and `OutputSocket` shares GUI part with `InternalSocket` does not have.

I'm looking for a way to share common parts of code between `InputSocket` / `InternalSocket` and `InputSocket` / `OutputSocket`. Code with consist of methods and parameters. 
I already tried using multiple interfaces but it didn't solve the problem, well it made it a little more manageable. When I create `IParsable` for *parsing part* and `IExternal` for *Input/Output common part*, then I need to create `IParsableSocket` for `InternalSocket` `IParsableExternalSocket` for `InputSocket` and `IExternalSocket` for `OutputSocket`. It does not change the point that I still need to implement code for every case, with leads to code duplication. 

Unfortunately there is no way for `InputSocket` to inherit from `OutputSocket` and `InternalSocet` at the same time in c#. 

Is there an alternative, to copy/paste of code or making an general Socket class with bunch of if logic and nulls?