Вообще говоря, композиция часто лучше, чем наследование , так как она имеет тенденцию приводить к менее тесно связанным конструкциям.
Если вы смешиваете управляемый и неуправляемый код, в моем опыте, как правило, проще включать неуправляемый код в управляемый код, чем наоборот.
Множественное наследование не поддерживается для управляемого кода, и есть статья в Википедии , в которой объясняется, почему:
Управляемый C ++ и использование классов и объектов, основанных на классах, остаются распространенными, как в Visual C ++. Единственное существенное изменение в Managed C ++ состоит в том, что возможности множественного наследования не поддерживаются. Это из-за ограничения CLR. Класс, управляемый в сборщике мусора CLR, не может наследовать более одного класса
Трудно дать хороший ответ относительно как лучше объединить ваши классы / функциональность, не зная почему вы хотите объединить классы ...