Нет общего решения, кроме как попытаться вывести общность разных классов на базу.
В вашем случае, поскольку единственное различие между apply()
, по-видимому, заключается в названии навыка, и у вас уже есть его как свойство экземпляра, вы можете вытянуть apply
до Base
и получить одинаковая реализация для всех дочерних классов Base
.
interface ISkill
{
void apply();
}
class Base : ISkill
{
protected string name { get; set; }
protected Base(string name)
{
this.name = name;
}
public void apply()
{
show();
Console.WriteLine(name + " apply");
}
private void show()
{
Console.WriteLine("show:"+name);
}
}
class Skill1 : Base
{
public Skill1(): base("skill1"){}
}
class Skill2 : Base
{
public Skill2(): base("skill2"){}
}