2017-08-22 114 views
0

我知道类的继承(显然),但我想知道行为是否可以在函数内复制?继承功能?

我有一种情况,所有的方法都需要在调用之前实现一些逻辑,而不是在所有函数中重复代码,我想知道是否有某种方法来继承基类函数或类似的东西,函数进程的其余部分?

这可能与C#?

例如,我有以下几种方法:

public void MyFunction1 { 
    if(debug) 
    return; 

    MyProductionApi.DoSomething(); 
} 

public void MyFunction2 { 
    if(debug) 
    return; 

    MyProductionApi.DoSomethingElse(); 
} 

正如你从上面看,我的方案基本上包括检查我是否在发展,所以我能避免昂贵的第三方API调用。如果我正在测试,我只想跳过它们,但是由于存在大量函数,因此要避免为每种方法写一个检查。

理想情况下,我可以创建一些基本功能来执行可以继承的检查,但我不知道这是否可行?

+5

为什么不在一个接口中定义两个实现。一个实际上做这个工作,另一个没有做任何事情。然后你只需要一个机制,以根据上下文在初始化将使用它的对象时采取正确的实现 – litelite

+2

考虑面向方面的编程,我可以想象添加一个属性[DontRunInDebug]给你的方法,如果(调试)返回为你。 –

+1

除了@MichałŻołnieruk,例如,在我们的项目中,我们使用Castle.Proxy –

回答

5

我想知道是否有某种方式来继承基函数或类似 一些功能 过程的其余部分之前执行?

您不需要必然的继承来解决重复代码的问题。您也可以将函数作为参数传递给其他函数,在调用它之前执行一些基本工作。你可以不喜欢它

public void MyFunction(Action a) 
{ 
    if(debug) 
    return; 

    a(); 
} 

,并调用它像

MyFunction(MyProductionApi.DoSomething); 

这解决您的场景

我只是想跳过他们,如果我测试

以非常简单的方式没有复杂的结构或继承。

+0

@litelite:这样可以避免重复吧 – Ryan

+0

啊,没想到,谢谢.. – alimac83