2

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

我有以下问题:

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

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

这样的事情可以实现吗?如果是这样,怎么做?

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

4

2 回答 2

6

听起来您想要模板方法模式

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派生类中的两个方法是不相关的。

于 2015-02-11T09:32:12.930 回答
1
public class MyBaseClass
{
    public void SomethingAwesome()
    {
         // ...
    }

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

    protected abstract void SomethingImpl();
}
于 2015-02-11T09:33:46.630 回答