c# - Refactoring a concrete method in abstract class which contains an abstract method -


considering below code,

abstract class abstractclass {  public abstract void abstractmethoda();  public void concretemethoda()  {   //some operation   concretemethodb();  } }   public void concretemethodb()  {   //huge code unrelated class   abstractmethoda();  } }  class derivedclass : abstractclass { public void abstractmethoda() { //some operation } } 

now wish move concretemethodb() separate class , make call method concretemethoda() in abstract class. since concretemethodb() uses abstract method abstractmethoda() implemented in derivedclass, unable access method abstractmethoda() new class? idea on how resolve this?

why don't make this

static class helper {  public static void concretemethodb(abstractclass caller)  {       //huge code unrelated class       caller.abstractmethoda();  } } 

and in abstractclass

abstract class abstractclass {  public abstract void abstractmethoda();  public void concretemethoda()  {   //some operation   helper.concretemethodb(this);  } } 

edit including interface based decoupling suggestion david arno:

static class helper {  public static void concretemethodb(iabstractclass caller)  {       //huge code unrelated class       caller.abstractmethoda();  } } interface iabstractclass {      void abstractmethoda(); } 

and in abstractclass

abstract class abstractclass {  public abstract void abstractmethoda();  public void concretemethoda()  {   //some operation   helper.concretemethodb(this);  } } 

that gives better layers isolation. of course solution suggested david in post mentioning usage of "action" , passing method argument worth consideration.


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -