c#虚拟法
我有基类和执行虚方法。我重写派生类中的execute方法。 在这种流中是否可以执行虚拟方法代码c#虚拟法,c#,class,virtual,C#,Class,Virtual,我有基类和执行虚方法。我重写派生类中的execute方法。 在这种流中是否可以执行虚拟方法代码 虚拟基方法代码执行 重写的方法代码执行 虚拟基方法代码执行 我不确定我是否解释得很好,但我希望我的问题得到解释:) 应该可以从方法中调用base.Execute() 更多信息:应该可以从方法中调用base.Execute() 更多信息:否,您需要以下信息: 不,您要的是以下内容: Jon,这如何允许派生类在派生功能之前和之后调用基类方法?这不是OP要求的吗?@Jon,你的代码有问题。Converter
应该可以从方法中调用
base.Execute()
更多信息:应该可以从方法中调用
base.Execute()
更多信息:否,您需要以下信息:
不,您要的是以下内容:
Jon,这如何允许派生类在派生功能之前和之后调用基类方法?这不是OP要求的吗?@Jon,你的代码有问题。Converter.ExecuteImpl()永远不会命中ConverterBase.Execute()@Tomas:这并不意味着——其想法是公共调用方只调用
Execute
,它将在基类中执行一些代码,然后在派生类中执行一些代码,然后在基类中执行最后一位代码。这不是你想要的吗?@Jamiec:我怀疑所需要的功能是让派生类提供一些行为,然后由基类中的功能包装。调用者只需调用Execute
,其余的人只需做正确的事情。@Jon我明白了。Jon,这是如何允许派生类在派生功能之前和之后调用基类方法的?这不是OP要求的吗?@Jon,你的代码有问题。Converter.ExecuteImpl()永远不会命中ConverterBase.Execute()@Tomas:这并不意味着——其想法是公共调用方只调用Execute
,它将在基类中执行一些代码,然后在派生类中执行一些代码,然后在基类中执行最后一位代码。这不是你想要的吗?@Jamiec:我怀疑所需要的功能是让派生类提供一些行为,然后由基类中的功能包装。调用者只需调用Execute
,其余的人只需做正确的事情。@Jon我明白了。从来没有用过这样的口吻,有点困惑。
public abstract class ConverterBase
{
public virtual void Execute()
{
try
{
//1. Base class code
// 2. Execute overridden method code.
}
finally
{
//3. Base class code
}
}
}
public class Converter : ConverterBase
{
public override void Execute()
{
//2. code
}
}
public abstract class ConverterBase
{
public void Execute()
{
try
{
// Stuff
ExecuteImpl();
}
finally
{
// Stuff
}
}
protected abstract void ExecuteImpl();
}
public class Converter : ConverterBase
{
protected override void ExecuteImpl()
{
// Stuff to execute within the parent's try block
}
}