如果我有以下内容:
例如。
例如。
public abstract class ClassA
{
protected abstract void ValidateTransaction();
}
public abstract class ClassB : ClassA
{
protected override void ValidateTransaction()
{
// some custom logic here
}
}
public class ClassC : ClassB
{
protected override void ValidateTransaction()
{
base.ValidateTransaction();
// some additional custom logic here
}
}
所以,我在ClassC的ValidateTransaction上没有找到用法。我没有看到它被调用过。
那么我猜这个是怎么工作的呢?我的意思是,它在这里调用了堆栈顶部的方法(调用ClassB的重写方法,然后在ClassC的重写方法中包含逻辑?)
这对我来说没有道理,为什么或者如何工作,或者这里的意图。
更新
好的,我找到了一个地方,在我们项目的许多子类中都调用了ClassA的PerformTransaction()方法。
因此,现在ClassA看起来像这样,并为您提供更多详细信息:
public abstract class ClassA
{
public void PerformTransaction()
{
ValidateTransaction();
// and calls some other code here.
}
protected abstract void ValidateTransaction();
}
好的,那么我们还有以下内容:public abstract class ClassB : ClassA
{
protected override void ValidateTransaction()
{
// some custom logic here
}
}
public class ClassC : ClassB
{
protected override void ValidateTransaction()
{
base.ValidateTransaction();
// some additional custom logic here
}
}
public class SomeAbritraryClass : ClassC
{
ClassA.PerformTransaction();
...
}
在一些继承ClassC的类中调用了ClassA.PerformTransaction()。
ClassA x = new ClassC(); a.ValidateTransaction();
- Jon Skeet