Actually, I don't have a good answer, except C #, Java does not have multiple Inheriance, and it SHOULD have. The whole point of interfaces being able to replace the need for multiple inheritance is like a big lie, which, when repeated many times, becomes true.
The argument is that multiple inheritance causes all these problems, but I continue to hear these arguments from C #, Java developers who have never used C ++. I also don’t remember how C ++ programmers said: "G, I love C ++, but if they just get rid of Multiple Inheritance, it will be a great language." People used it when it was practical, and when not.
Your problem is a classic example of how multiple inheritance would be appropriate. Any suggestion on code refactoring really tells you how to deal with the problem that C #, Java do not have multiple inheritance.
Also, all discussions about “oh delegation is better, la di dah,” confuse religion with design. There is no right way. Things are more useful or less useful, and that’s all.
In your case, Multiple Inheritance will be a more useful and more elegant solution.
As for refactoring your code in a less useful form, to satisfy all religious people who have never used multiple inheritance and believe that “multiple inheritance is bad,” I think you will have to downgrade your code because I don't see C #, Java is "improving" this way soon. Too many people repeat the religious mantra to such a degree of stupidity that I do not see it ever added to the language.
... but, as you can see from the above solutions, most people think that such a solution will be WAY TOO COMPLEX AND CONFLICT!
I would rather take the risk on the territory of "x extends a, b" myself, even if this is a very frightening solution that can disrupt the capabilities of most C #, Java programmers.
What is even more surprising with respect to the solutions proposed above is that everyone here who suggested you reorganize your code into “delegation” because multiple inheritance is bad if they encounter the same problem would solve the problem simply : “x extends a, b” and be done with it, and all their religious arguments regarding “delegation versus inheritance” will disappear. All debate is stupid, and this is only promoted by ignorant programmers who only demonstrate how well they can read from a book and how little they can think for themselves.
You are 100% correct that Multiple Inheritance will help, and no, you are doing something wrong in your code if you think that C #, Java should have it.