我想声明一些使用抽象方法继承抽象类的类。 另外我想让子类中的某些方法自动调用公共代码(即记录代码)
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
}
}
事件可以帮助我吗?
此致
答案 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,因为它的简单性和强大功能。检查这篇文章的例子: