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

Calling a method when another method is called

这可能是一个愚蠢的问题,但这里是。

我遇到以下问题:

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() 方法被调用时被调用 class继承自它。

这背后的想法是,出于许多无聊的公司原因,我需要在调用此方法时进行记录。我宁愿有一个基础 class 可以在调用方法时自动审核,而不是让开发人员调用方法 himself/herself.

这样的东西能实现吗?如果可以,怎么做?

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

听起来你想要 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 一个 public Something 方法,当然 - 如果没有声明 Something(以某种方式),那么派生的 类 中的两个 Something 方法是不相关的。

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

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

    protected abstract void SomethingImpl();
}