Переопределите переопределенный метод (C#)

Нет, нет.

, В первую очередь, Внедрение SQL является входной проблемой фильтрации, и XSS является выводом, выходящим из одного - таким образом, Вы даже не выполнили бы эти две операции одновременно в жизненный цикл кода.

Основные правила ползунка

  • Для SQL-запроса, свяжите параметры (как с PDO) или используйте собственную драйвером функцию выхода для переменных запроса (такой как mysql_real_escape_string())
  • Использование strip_tags(), чтобы отфильтровать нежелательный Escape HTML
  • весь другой вывод с htmlspecialchars() и помнить 2-е и 3-и параметры здесь.
37
задан Robert W 20 July 2009 в 11:16
поделиться

4 ответа

Не видя кода, который вызывает SampleMethod, я предполагаю, что у вас есть объект типа B и вызовите для этого SampleMethod.

17
ответ дан 27 November 2019 в 04:46
поделиться

Замену можно выполнять в цепочке сколь угодно долго. Код, который вы показали, правильный.

Единственное возможное объяснение поведения, которое вы видите, состоит в том, что объект, на который вы ссылаетесь, на самом деле имеет тип B . Я предлагаю вам дважды проверить это и, если что-то по-прежнему не имеет смысла, опубликовать другой подходящий код.

39
ответ дан 27 November 2019 в 04:46
поделиться

Точка останова, скорее всего, не будет достигнута, потому что вы фактически создали экземпляр класса «B» .

Разрешение переопределения метода работает на основе фактического типа времени выполнения класса, метод которого должен быть вызван. Итак, если у вас был следующий код:

C c = new C();
c.SampleMethod();

и следующее:

3
ответ дан 27 November 2019 в 04:46
поделиться

Это решение работает нормально; хотя для фактического использования его вне класса, в котором находится метод, вам необходимо установить доступ SampleMethod к public , а не к protected во всех случаях, когда он появляется, поэтому:

public class A
{
    public virtual void SampleMethod() 
    {
        Console.WriteLine("lol");
    }
}

public class B : A
{
    public override void SampleMethod()
    {
        base.SampleMethod();
    }
}

public class C : B
{
    public override void SampleMethod()
    {
        base.SampleMethod();
    }
}
2
ответ дан 27 November 2019 в 04:46
поделиться
Другие вопросы по тегам:

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