c#虚方法

时间:2011-09-05 12:56:44

标签: c# class virtual

我有基类和Execute虚方法。我重写派生类中的execute方法。 是否可以在此类流程中执行虚拟方法代码?

  1. 虚拟基本方法代码执行
  2. 重写方法代码执行
  3. 虚拟基本方法代码执行
  4. 不确定我是否已经解释好一切,但我希望能够解释我的问题:)

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

2 个答案:

答案 0 :(得分:9)

不,你想要template method pattern

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

答案 1 :(得分:0)

应该可以在方法中调用base.Execute()

更多信息:http://msdn.microsoft.com/en-us/library/hfw7t1ce(v=vs.71).aspx