Из того, что я понял из вашего вопроса, вам нужно, чтобы классы child имели доступ к той же функции, что и родитель. Среди других вариантов, я думаю, вы можете использовать абстрактный класс для обработки этого. Просто вызовите метод один раз в родительском классе, другие дочерние классы также сделают это.
Кроме того, он гибкий, учитывая возможность переопределения метода в дочерних классах, если возникнет такая необходимость. См. ChildB
реализацию.
Образец.
public abstract class FamilyBase
{
public virtual void DoChores(FamilyBase member)
{
Console.WriteLine("Doing Chores by: "+member);
}
}
public class Parent: FamilyBase
{
public Parent()
{
}
private List<FamilyBase> family=new List<FamilyBase>();
public void AddMember(FamilyBase member)
{
family.Add(member);
}
//send out chores
public void SendOutMessages()
{
if(family.Count>0)
{
foreach(var member in family)
{
member.DoChores(member);
}
}
}
}
public class ChildA:FamilyBase
{
public ChildA()
{
}
}
public class ChildB:FamilyBase
{
public ChildB()
{
}
public override void DoChores(FamilyBase member)
{
Console.WriteLine("I'm doing my homework first.");
base.DoChores(member);
}
}
Отправка сообщений от родителя.
Parent par=new Parent();
parent.AddMember(new ChildA());
parent.AddMember(new ChildB());
parent.SendOutMessages();
Выход:
Doing Chores by : Parent
Doing Chores by : ChildA
I'm doing my homework first.
Doing Chores by : ChildB