如何在C#中的所有班级孩子中调用方法?

时间:2019-07-07 18:39:15

标签: c# class parent-child children

我有一个父班和许多子班。我想做的是在父类中调用一个方法,该方法也将在所有子类中执行,而不必分别引用它们。

类似这样的东西:

public class Parent
{
public static void SomeMethod(){}
}
//certain amount of child classes
public void MainMethod(){
Parent.SomeMethod(); //Gets executed in all children
}

1 个答案:

答案 0 :(得分:0)

根据我从您的问题中得到的信息,您需要 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