C#抽象方法和通用代码

时间:2013-02-07 14:44:48

标签: c#

我想声明一些使用抽象方法继承抽象类的类。 另外我想让子类中的某些方法自动调用公共代码(即记录代码)

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
    }
}

事件可以帮助我吗?

此致

3 个答案:

答案 0 :(得分:4)

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

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
    }
}

答案 1 :(得分: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();
        }
    }

答案 2 :(得分:0)

为此,您需要拦截器

我会建议你使用PostSharp,因为它的简单性和强大功能。检查这篇文章的例子: