Enemy Class switching between sub-classes?

Kinda new to unity and c#. Just need some input, thanks!

I have enemies with a boxcollider2D/rigidbody2D that currently :
->get blown up->make a ragdoll prefab with a separate ragdoll.cs , copy all damage data, destroy self

then the ragdoll prefab:
→ if (!dead) ->turns back into boxCollider enemy, copy damage data, destroy self yadda yadda.

Was simple at first but now my enemies can be bodydamaged /headDamaged/onFire/parachuting/etc etc

The OOP beat into me over the years makes me wanna simplify things but not sure how to accomplish this in the Unity context. I tried a master prefab with both body types enabled/disabled but could never ‘reset’ the ragdoll plus its way less convenient with transform,rigidbody2D etc not attached to the main class for the non ragdoll.

Looking into a parent enemy class with monobehavior, subclasses with virtual/override, its simplifies having to pass back and forth a million things. But of course when you create a new “enemy ragdoll” from “enemy” all its base class stuff is a new instance of “enemy” and its attributes arent carried over.

To clean things up slightly Id resort to a “enemy attributes class” that id pass back and forth. I dunno

If anyone more experienced than I is willing to throw in their 2 cents Id appreciate it.

Tried a state machine?