Możesz spróbować rozwiązać ten problem poprzez wykorzystanie dziedziczenia wielokrotnego. Możesz stworzyć klasę bazową, która zawiera podstawowe pola i metody dla każdej profesji, a następnie stworzyć klasy dziedziczące po klasie bazowej dla każdej profesji z dodatkowymi polami i metodami dla każdej z nich.
Na przykład, możesz stworzyć klasę bazową o nazwie "Character" z polami "Strength", "Intelligence", i "Health". Następnie możesz stworzyć klasy dziedziczące po klasie bazowej, takie jak "Warrior", "Mage", itd. dla każdej profesji.
W klasie dziedziczącej dla każdej profesji możesz zdefiniować dodatkowe pola i metody, które są specyficzne dla danej profesji, takie jak "Weapon" dla wojownika lub "Spell" dla maga.
W ten sposób unikniesz powielania kodu, ponieważ większość pól i metod będzie dziedziczona po klasie bazowej, a tylko specyficzne dla danej profesji elementy będą definiowane w klasie dziedziczącej.
np.
public class Character
{
public int Strength { get; set; }
public int Intelligence { get; set; }
public int Health { get; set; }
}
public class Warrior : Character
{
public string Weapon { get; set; }
public void LevelUp()
{
Strength += 5;
Health += 200;
}
}
public class Mage : Character
{
public string Spell { get; set; }
public void LevelUp()
{
Intelligence += 5;
Health += 80;
}
}