BernardBouree Ответов: 1

Как обнаружить и идентифицировать тип возвращаемого объекта?


Привет,
У меня есть следующий код с базовым классом Toponyme и двумя производными подклассами ToponymeFR et ToponymeBE
Функция Detecter позволяет возвращать соответствующий производный класс.

Благодарим Вас за вашу помощь.

Бернард


Модуль Module1

Суб Основной()
Dim def As New List (of String)
def. Add ("Франция")
деф.Добавить("Бельжик")
Для каждого D Как нить в деф
Dim o как объект
o = детектор(d)
Приставка.WriteLine ("Objet =" & o. ToString)
Приставка.WriteLine ("Nom =" & o. nom)
Выбрать тип объекта '???????????
Дело ToponymeFr
Приставка.WriteLine ("CodeINSEE=" & o. CodeINSEE) '???????????
Падеж Топонима
Приставка.WriteLine ("CodeINS=" & o. CodeINS) '???????????
Конец Выбрать

Следующий
Приставка.Линия чтения()
Конец Подводной Лодки
Функция Detecter (def As String) как объект
Выберите чехол защ
Дело " Франция"
Дим топо как новый Топонимефр
Возвращение топо
Дело " Belgique"
Дим топо как новый топоним
Возвращение топо
Дело Другое
Ничего Не Возвращать
Конец Выбрать
Конечная Функция

Топоним Публичного Класса
Деф Свойство Как Строку
Собственность Ном, Как Струна
Код Свойства В Виде Строки
Public Sub New(d As String)
Def = d
Конец Подводной Лодки
Общественные Саб Новый()

Конец Подводной Лодки
Конец Класса

Публичный Класс ToponymeFr
Наследует Топоним
Свойство CodeINSEE В Виде Строки
Public Sub New(d As String)
MyBase. New(d)
Nom = " Франция"
Код = " Fr"
CodeINSEE = d
Конец Подводной Лодки
Общественные Саб Новый()
Nom = " Франция"
Код = " Fr"
Конец Подводной Лодки

Конец Класса

Публичный Класс ToponymeBe
Наследует Топоним
Код Свойства В Виде Строки
Public Sub New(d As String)
MyBase. New(d)
Nom = " Belgique"
Код = " Быть"
CodeINS = d
Конец Подводной Лодки
Общественные Саб Новый()
Nom = " Belgique"
Код = " Быть"
Конец Подводной Лодки
Конец Класса
Конечный Модуль

Что я уже пробовал:

1) в Detecter я возвращаю объект, который выглядит не очень хорошо, но есть ли у меня выбор ?
2)ToponymeFr и ToponymeBe имеют некоторые различные свойства CodeINSEE и CodeINS, не имея доступа к ним в основном. Я попытался найти метод "ObjectType", чтобы определить тип возвращаемого объекта, позволяющий выбрать лечение, но безуспешно.

1 Ответов

Рейтинг:
9