2

我想用抽象方法声明一些继承抽象类的类。 我也想在子类中的一些方法自动调用一个公共代码(即日志代码)

public abstract class AbstractClass
{
    public abstract void AbstractMethod();
    public void CommonCode()
    {
        //do something
    }
}

public class ChildClass : AbstractClass
{
    public void AbstractMethod()
    {
        //automatically call CommonCode in base class
        //do something
    }
}

活动可以帮助我吗?

问候

4

3 回答 3

5

不用太花哨,您可以使抽象方法成为您希望继承者做的事情的“胆量”,并从基类的包装方法中调用它。例如:

public abstract class AbstractClass
{
    // Note that this protected since consumers won't call it directly
    protected abstract void AbstractMethod();

    // Instead, consumers will use this method which calls CommonCode
    // before the abstract method.
    public void AbstractMethodWrapper()
    {
        CommonCode();
        AbstractMethod();
    }

    public void CommonCode()
    {
        //do something
    }
}

public class ChildClass : AbstractClass
{
    protected override void AbstractMethod()
    {
        // The wrapper method in the base handles calling common code
        //do something
    }
}
于 2013-02-07T14:50:06.600 回答
0

我认为您正在寻找类似以下的内容(如果我理解正确的话):

 public abstract class AbstractClass
    {
        public abstract void AbstractMethod();
        public void CommonCode()
        {
            //do something
        }
    }

    public class ChildClass : AbstractClass
    {
        public override void AbstractMethod()
        {
            //automatically call CommonCode in base class
            //do something
            base.CommonCode();
        }
    }
于 2013-02-07T14:47:28.053 回答
0

为此,您需要拦截器

我将向您推荐 PostSharp,因为它简单且功能强大。检查例如这篇文章:

于 2013-02-07T14:50:45.163 回答