Другие ответы на все содержат существенные опасности и упущения (например, просто попытка бросить без тестирования может быть опасна - если вы действительно не знаете, что можете применить к данному типу).
Прочитайте этот ответ в полном объеме, чтобы узнать и понять/понять, почему все происходит не так, как вы этого хотели.
Потому что вы указали его как «базовый» класс , попробуйте использовать ключевое слово «var», а затем добавьте класс «Производный».
class Demo
{
public static void Main()
{
var Obj = new Derived();
Obj.DerivedTestMethod();
}
}
Однако, если вы все еще хотите явно объявить его первым «Base»
Base Obj = new Derived();
, то вы можете проверить, является ли переменная «Obj» фактически класса «производный», используя C# «в» ключевое слово
if(Obj is Derived)
{
Obj = (Derived)obj; // here we cast it
}
else
{
// Other code, but now we know that the "Obj" variable isn't of type "Derived".
}
Для получения дополнительной информации о тестировании с «это» ключевое слово, обратитесь к документации MSDN http://msdn.microsoft.com/en-us/library/scekt9xw.aspx или проверить этот ответ: https://stackoverflow.com/a/10416231/1155847
конечно, 'Base' не' DerivedTestMethod'. –
, потому что объект, с которым вы работаете, имеет тип 'Base' – Ric
Можете ли вы объяснить немного больше о том, что« Base не имеет этого метода » –