c # виртуальный метод - PullRequest
       26

c # виртуальный метод

1 голос
/ 05 сентября 2011

У меня есть базовый класс и виртуальный метод Execute. Я переопределяю метод execute в производном классе. Можно ли выполнить код виртуального метода в таком потоке?

  1. код виртуального базового метода execute
  2. переопределенный код метода execute
  3. код виртуального базового метода execute

Не уверен, хорошо ли я все объяснил, но надеюсь получить объяснение моего вопроса:)

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 ]

9 голосов
/ 05 сентября 2011

Нет, вам нужен шаблонный шаблон здесь:

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
    }
}
0 голосов
/ 05 сентября 2011

Это должно быть возможно путем вызова base.Execute() из вашего метода.

Подробнее: http://msdn.microsoft.com/en-us/library/hfw7t1ce(v=vs.71).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...