调用另一个方法时调用方法

时间:2015-02-11 09:29:17

标签: c# class methods partial-methods

这可能是一个愚蠢的问题,但现在就去了。

我有以下问题:

public class MyBaseClass
{
    public void SomethingAwesome()
    {
        //Awesome stuff happens here, but only when the Something() method
        //is called in the other classes.
    }
}

public class SomeClass : MyBaseClass
{
    public void Something()
    {
        //Something happens here
    }
}

public class SomeOtherClass : MyBaseClass
{
    public void Something()
    {
        //Something else happens here
    }
}

MyBaseClass 有一个方法需要在从它继承的类中调用 Something()方法时调用。

这背后的想法是,我需要记录这个方法被调用时出于很多无聊的公司原因。我宁愿有一个基类,它可以在调用方法时自动进行审计,而不是让开发人员自己调用该方法。

可以实现这样的目标吗?如果是这样,怎么样?

我已经考虑了部分方法,但这需要具有相同名称的类,这在这种情况下是不可能的。

2 个答案:

答案 0 :(得分:6)

听起来你想要template method pattern

public abstract class MyBaseClass
{
    public void Something()
    {
        // Code from SomethingAwesome here, or keep SomethingAwesome
        // separate and call it from here
        SomethingImpl();
    }

    protected abstract void SomethingImpl();
}

public class SomeClass : MyBaseClass
{
    protected override SomethingImpl()
    {
        // Something happens here
    }
}

假设您很高兴MyBaseClass 拥有公共Something方法,当然 - 如果它没有声明Something(在某些方面)方式)然后派生类中的两个Something方法是不相关的。

答案 1 :(得分:1)

public class MyBaseClass
{
    public void SomethingAwesome()
    {
         // ...
    }

    public void Something()
    {
         SomethingImpl();
         SomethingAwesome();
    }

    protected abstract void SomethingImpl();
}