Вы можете форсировать это явным приведением, например,
((Child)p).GetNo();
Или вы можете использовать скрытие, например,
public new int GetNo()
{
return 2;
}
Хотя я думаю, что последний вызывается, только если переменная введена вкласс, который скрывает метод.
Если вам действительно нужно правильно переопределить метод, и он из скомпилированной DLL, подумайте о том, чтобы связаться с разработчиками, чтобы узнать, могут ли они сделать метод виртуальным (и если нет, то почему)или если проект с открытым исходным кодом, просто получите исходный код и измените его самостоятельно.