Невозможно переопределить виртуальный метод C # - PullRequest
0 голосов
/ 06 декабря 2010

У меня следующая ситуация

public interface IFoo
{
    void Bar();
}
public class Parent : IFoo
{
    public virtual void Bar(){}
}
public class Child : Parent, IFoo
{

    public override void Bar(){}

}

IFoo test = new Child();
test.Bar(); 

test.Bar () всегда вызывает родительский метод!

Любая помощь будет принята с благодарностью !!

Ответы [ 3 ]

1 голос
/ 07 декабря 2010

Это должно произойти, только если вы реализуете это явно.

Я только что проверил, и это работает.

0 голосов
/ 07 декабря 2010

C # 4.0 говорит, что у вас есть ошибка в синтаксисе - public interface IFoo { void Bar(); } - здесь недопустимы модификаторы доступа Таким образом, если удалить «public», код будет выполняться с дочерней версией метода, как вы запланировали

0 голосов
/ 07 декабря 2010

WorksForMe: проблема должна быть где-то еще, когда я запускаю этот код, я вижу, что дочерний метод вызывается правильно. Чтобы скомпилировать ваш код, мне пришлось удалить «public» из метода в интерфейсе, и я дал обоим методам Bar () тело.

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