Как я могу назвать 'базовое внедрение' переопределенного виртуального метода? [дубликат]

Ну, BufferedImage не знает, что пишется как JPEG - что касается его, это мог быть PNG или GIF или TGA или TIFF или BMP..., и у всех тех есть различные размеры файла. Таким образом, я не полагаю, что существует любой путь к BufferedImage, чтобы дать Вам размер файла непосредственно. Необходимо будет просто выписать его и считать байты.

71
задан Matthew Lock 25 June 2014 в 03:51
поделиться

3 ответа

Используя языковые конструкции C #, вы не можете явно вызвать базовую функцию из вне области A или B . Если вам действительно нужно это сделать, значит, в вашем дизайне есть изъян - т.е. эта функция не должна быть виртуальной с самого начала, или часть базовой функции должна быть выделена в отдельную невиртуальную функцию.

Вы можно из внутри BX, но вызвать AX

class B : A
{
  override void X() { 
    base.X();
    Console.WriteLine("y"); 
  }
}

Но это что-то еще.

Как указывает Саша Труф в этом ответе , вы можете сделать это через IL. Вероятно, вы также можете добиться этого с помощью отражения, как указывает mhand в комментариях.

114
ответ дан 24 November 2019 в 12:59
поделиться

Вы не можете и не должны. Вот для чего нужен полиморфизм, чтобы каждый объект имел свой собственный способ делать некоторые «базовые» вещи.

8
ответ дан 24 November 2019 в 12:59
поделиться

Вы можете это сделать, но не в указанном вами месте. В контексте B вы можете вызвать AX () , вызвав base.X () .

.
9
ответ дан 24 November 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: