代码之家  ›  专栏  ›  技术社区  ›  is_oz

再次调用另一个类的抽象继承方法

  •  0
  • is_oz  · 技术社区  · 7 年前

    HelperClass .

    例如:我有两个抽象派生类。我创建 ClassA 然后 电话 TakeAction 采取行动 助手类 class the method 解决问题`。

    我的问题是:我怎样才能再次呼叫a A类 助手类 ? 因为SolveProblem有一些逻辑,它将决定是否返回。

    class Program {
        static void Main(string[] args) {
            var classA = new ClassA();
            classA.StartOperation();
        }
    }
    
    public abstract class ClassAbstract {
        public abstract void StartOperation();
    
        public void TakeAction() {
            var helper = new HelperClass();
            helper.SolveProblem(DayOfWeek.Sunday);
        }
    
        public abstract void WeekDayOperation();
        public abstract void WeekEndOperation();
    }
    
    public class ClassA : ClassAbstract {
        public override void StartOperation() {
            TakeAction();
        }
    
        public override void WeekDayOperation() {
        }
    
        public override void WeekEndOperation() {
            throw new NotImplementedException();
        }
    }
    
    public class ClassB : ClassAbstract {
        public override void StartOperation() {
            TakeAction();
        }
    
        public override void WeekDayOperation() {
        }
    
        public override void WeekEndOperation() {
            throw new NotImplementedException();
        }
    }
    
    public class HelperClass {
            public void SolveProblem(DayOfWeek day) {
            //Problem solved. I need to call "CallThisMethod" who called this helper class
            //How to I Call
            switch(day) {
                case DayOfWeek.Sunday:
                case DayOfWeek.Saturday:
                    ClassA.WeekEndOperation();
                    break;
                case DayOfWeek.Friday:
                    FridayOperations();
                    break;
                default:
                    ClassA.WeekDayOperation();
                    break;
            }
        }
    
        public void FridayOperations() {
    
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Mong Zhu Bart de Boer    7 年前

    一种解决方案是传递类型为的实例: ClassAbstract SolveProblem 。然后可以使用此变量调用该方法。

    public void SolveProblem(DayOfWeek day, ClassAbstract c)
    {
        //Problem solved. I need to call "CallThisMethod" who called this helper class
        //How to I Call
        switch (day)
        {
            case DayOfWeek.Sunday:
            case DayOfWeek.Saturday:
                c.WeekEndOperation();
                break;
            case DayOfWeek.Friday:
                FridayOperations();
                break;
            default:
                c.WeekDayOperation();
                break;
        }
    }
    

    this )在的基本实现中调用此方法时 TakeAction 类摘要 :

    public abstract class ClassAbstract
    {
        public abstract void StartOperation();
    
        public void TakeAction()
        {
            var helper = new HelperClass();
            helper.SolveProblem(DayOfWeek.Sunday, this);
        }
    

    通过以下现象 polymorphism WeekEndOperation WeekDayOperation 班级的 ClassA