Выяснение типа подкласса экземпляра, объявленного как суперкласс - PullRequest
2 голосов
/ 01 июня 2009

Предполагая, что у меня есть суперкласс A и подклассы A1 и A2, которые наследуются от A, как я могу получить тип подкласса переменных в приведенном ниже коде?

A _a1 = new A1();
A _a2 = new A2();
// Need type of A1 and A2 given the variables _a1 and _a2.

Кроме того, если у меня был другой подкласс A2_1, который является подклассом A2, как я могу получить код наименьшего типа подкласса, указанный ниже?

A _a2_1 = new A2_1();

РЕДАКТИРОВАТЬ: Спасибо за ответы. Что за бу бу. Обдумав проблему и даже не попробовав GetType (). = /

Ответы [ 4 ]

5 голосов
/ 01 июня 2009

Console.WriteLine(_a1.GetType());

GetType может возвращать тип переменной во время выполнения независимо от типа объявления.

2 голосов
/ 01 июня 2009

Вы можете использовать метод GetType ():

Type type = _a1.GetType();
Type subtype = _a2_1.GetType();
1 голос
/ 01 июня 2009

GetType () для любого объекта всегда дает вам реальный тип объекта, а не тип суперкласса. Если вы создаете экземпляры подклассов с помощью «new subclass ()», то «subclass» является типом объекта.

Вызов GetType () - это все, что вам нужно в ваших ситуациях.

1 голос
/ 01 июня 2009

Для первого - просто используйте _a1.GetType() и _a2.GetType(). 2-й - что вы подразумеваете под «типом низшего подкласса»; или: какой ответ вы ожидаете ... (что может помочь нам понять, что вы имеете в виду ...)

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