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



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

我有以下问题:

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()方法时,需要调用该方法。

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

这样的事情能实现吗?如果是,如何?

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

听起来你想要模板方法模式:

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方法是不相关的。

public class MyBaseClass
{
    public void SomethingAwesome()
    {
         // ...
    }
    public void Something()
    {
         SomethingImpl();
         SomethingAwesome();
    }
    protected abstract void SomethingImpl();
}

最新更新